【问题标题】:how to check if a view controller appeared after some other page in navigation controller pressed back button?如何检查在导航控制器中的其他页面按下后退按钮后是否出现了视图控制器?
【发布时间】:2017-11-21 17:40:42
【问题描述】:
我在detailViewController,当我按下返回按钮时,它转到mainViewController。如何在mainViewController 中确定不是新加载,而是在detailViewController 中按下了返回按钮?
我想在mainViewController 中重新加载一个表,因此我试图确定它是新加载的还是来自detailViewController。任何帮助将不胜感激并投赞成票。谢谢。
【问题讨论】:
标签:
ios
swift
uinavigationcontroller
viewcontroller
【解决方案1】:
覆盖 mainViewController 中的 viewWillAppear() 函数以在加载之前执行任务。
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated: animated)
//do tasks when coming from detailViewController
}
编辑:
如果您不希望 viewWillAppear 中的代码在新加载时退出,还有另一种方法,但我不知道这是否是最好的做法。在您的后退按钮处理程序中执行以下操作:
//pop the detailViewController
self.navigationController.popViewControllerAnimated(true)
//mainViewController is now at the top
//safely unpack it
if let parentVC = self.navigationController.topViewController as? mainViewController {
//call a custom function in mainViewController which will
//execute only the stuff you want upon back button press
parentVC.customFunction()
}