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

How to access previous view controller from a dismiss command

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

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

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

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

我知道这可以通过通知实现,但如果可能我不想使用这种方法!

首先,没有必要访问之前的 ViewController 来重新加载 tableview(或任何其他函数)

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

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

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