如何从关闭命令访问前一个视图控制器

Posted

技术标签:

【中文标题】如何从关闭命令访问前一个视图控制器【英文标题】:How to access previous view controller from a dismiss command 【发布时间】:2019-09-03 00:47:58 【问题描述】:

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

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

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

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

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

【问题讨论】:

使用委托模式 【参考方案1】:

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

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

以您提到的方式持有对前一个 viewController 的引用将使您的应用在您的应用变得更加复杂时非常难以维护。

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于如何从关闭命令访问前一个视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何在推送前关闭模型视图控制器?

切换到另一个视图控制器时,如何保持标签栏可见? [关闭]

如何从另一个类访问 UIView 的宽度和高度?

如何在没有任何推送序列的情况下快速从另一个视图控制器访问方法?

关闭模态视图控制器时更新前一个视图控制器中的pickerView

ios 在关闭前一个视图控制器后立即显示视图控制器