如何在Swift中从另一个ViewController的TableView中重新加载数据
在一个ViewController中,我试图在另一个ViewController的TableView中重新加载数据,如下所示:
(self.presentedViewController as! tableViewController).table.reloadData()
where tableViewController是TableView的控制器中的类(这不是上层驼,我知道),table是TableView。 那么,这样做会产生“致命错误:意外地发现零,而解包可选值”,我想这是有道理的,因为“presentViewController”还没有加载。 我也试过这个:
(self.navigationController!.viewControllers[self.navigationController!.viewControllers.count - 2] as! tableViewController).table.reloadData()
这产生了相同的结果(我确保tableViewController在navigationController栈的当前ViewController下)。 我很困惑我应该做什么…我觉得应该更容易引用不同视图控制器中的属性。 我可能有点模糊; 如果我是,告诉我你需要知道什么!
Xcode 9•Swift 4
创build通知名称:
extension Notification.Name { static let reload = Notification.Name("reload") }
您可以发布通知
NotificationCenter.default.post(name: .reload, object: nil)
并在视图控制器添加一个观察者,您要重新加载数据:
override func viewDidLoad() { super.viewDidLoad() NotificationCenter.default.addObserver(self, selector: #selector(reloadTableData), name: .reload, object: nil) } @objc func reloadTableData(_ notification: Notification) { tableView.reloadData() }