本质上,我试图使用Notifications将选定的tableView行的值发送到另一个ViewController。但是由于某种原因,什么也没有传递给第二个控制器。
在TableViewController中,我通过执行以下操作选择了所选行的值:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let portfolio = structure[indexPath.row]
NotificationCenter.default.post(name: Notification.Name("selectedTOCustomer"), object: nil, userInfo: ["TOCustomerKey": portfolio])
}
接下来,我转到另一个视图控制器,并在ViewDidLoad中添加一个观察者:
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(self.myFunc2(notification:)), name: Notification.Name("selectedTOCustomer"), object: nil)
它所引用的函数如下,应该打印第二个ViewController中选定的行的值:
@objc func myFunc2(notification: Notification) {
guard let data = notification.userInfo as? [String: String] else {
return
}
print("\(data["TOCustomerKey"])")
}
更新:
从JSON数据填充的TableView行是第一个视图控制器和引用顶部的变量
var structure = [AlreadyScheduledStructure]()
结构由
组成struct AlreadyScheduledStructure: Codable {
let person: String
}