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