基本上,我有一个使用JSON填充的TableViewController
。每一行都可以用didSelectRowAt
portfolio.customer
我想与其他一些ViewController共享所选行的值
但是,并非所有这些ViewController都会在用户选择该行后立即打开,实际上,某些ViewController可能会在选定单元格后的几分钟内打开。
每次选择一个新单元格时,所选单元格的值都会改变。
如何使用NSNotifications将 selectedCustomer
的值传递给其他视图控制器。
这是didSelectRowAt
中的代码:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let portfolio = structure[indexPath.row]
selectedCustomer = portfolio.customer
}
structure
是我用来解码JSON值的结构,客户是一个字符串值。
以下是到目前为止我尝试过的示例:
在didSelectRowAt
中,我添加了以下NotificationCenter .post:
NotificationCenter.default.post(name: Notification.Name("YOURKEY"), object: nil, userInfo: ["titleKey": selectedCustomer])
在另一个ViewController中,我在viewDidLoad中添加了一个观察者
NotificationCenter.default.addObserver(self, selector: #selector(self.myFunc(notification:)), name: Notification.Name("YOURKEY"), object: nil)
以及以下函数来解释传递的值并打印出来
@objc func myFunc(notification: Notification) {
guard let data = notification.userInfo as? [String: String] else {
return
}
debugPrint("my title \(data["titleKey"])")
}
函数myFunc由于某些原因无法打印所选单元格的值,我不明白为什么?