如何从Dismiss命令访问以前的视图控制器

时间:2019-09-03 00:47:58

标签: ios swift xcode uiviewcontroller presentviewcontroller

在我的整个应用程序中,我使用导航控制器来推送和弹出视图控制器。当我从一个ViewController弹出时,我检查是否可以使用以下方法重新加载上一个中的数据:

_ = self.navigationController?.popViewController(animated: true) if let previousViewController = self.navigationController?.viewControllers.last as? AnimalsVC { previousViewController.tableView.reloadData() }

这每次都有效,但是现在我需要对另一个视图进行相同的操作,但这并不是导航控制器的一部分,因为我以模态形式存在(而不是将其推送到导航控制器)。现在,我无法像以前那样访问以前的ViewController,也无法弄清楚如何访问以前的ViewController。

如何在不访问导航控制器的情况下访问上一个ViewController以像示例代码一样重新加载tableview?

我知道通知可以做到这一点,但我宁愿不要使用该方法!

2 个答案:

答案 0 :(得分:3)

首先,不需要访问以前的ViewController来重新加载tableview(或任何其他函数)

我建议您使用代理来实现相同的功能。

以您提到的方式保留对先前viewController的引用将使您的应用在变得更加复杂时很难维护。

答案 1 :(得分:2)

您可以在模态显示的控制器的viewWillAppear方法中调用tableview.reloadData()