Как использовать NSNotifications для передачи строки tableView, выбранной между ViewControllers? - PullRequest
0 голосов
/ 27 июня 2019

По сути, у меня есть TableViewController, который заполняется с помощью JSON. Каждая строка может быть идентифицирована следующей строкой в ​​didSelectRowAt

portfolio.customer

Я хотел бы поделиться значением выбранной строки с несколькими другими ViewControllers

Но не все эти ViewControllers откроются, как только пользователь выберет строку, фактически некоторые ViewControllers могут быть открыты через несколько минут после выбора ячейки.

Значение этой выбранной ячейки, конечно, будет меняться каждый раз при выборе новой.

Как я могу использовать 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])

В одном из других ViewControllers я добавил наблюдателя в 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 по какой-то причине не может распечатать значение выбранных ячеек, и я не понимаю, почему?

...