如何在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() }