在我的整个应用程序中,我使用导航控制器来推送和弹出视图控制器。当我从一个ViewController弹出时,我检查是否可以使用以下方法重新加载上一个中的数据:
_ = self.navigationController?.popViewController(animated: true)
if let previousViewController = self.navigationController?.viewControllers.last as? AnimalsVC {
previousViewController.tableView.reloadData()
}
这每次都有效,但是现在我需要对另一个视图进行相同的操作,但这并不是导航控制器的一部分,因为我以模态形式存在(而不是将其推送到导航控制器)。现在,我无法像以前那样访问以前的ViewController,也无法弄清楚如何访问以前的ViewController。
如何在不访问导航控制器的情况下访问上一个ViewController以像示例代码一样重新加载tableview?
我知道通知可以做到这一点,但我宁愿不要使用该方法!
答案 0 :(得分:3)
首先,不需要访问以前的ViewController来重新加载tableview(或任何其他函数)
我建议您使用代理来实现相同的功能。
以您提到的方式保留对先前viewController的引用将使您的应用在变得更加复杂时很难维护。
答案 1 :(得分:2)
您可以在模态显示的控制器的viewWillAppear方法中调用tableview.reloadData()