如何从关闭命令访问以前的视图控制器
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()
在我的整个应用程序中,我使用导航控制器来推送和弹出我的视图控制器。当我从一个 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()