如何使用NSNotifications传递在ViewControllers之间选择的tableView行?

时间:2019-06-27 18:55:20

标签: ios swift nsnotifications

基本上,我有一个使用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由于某些原因无法打印所选单元格的值,我不明白为什么?

0 个答案:

没有答案