如何检查视图控制器是否在导航控制器中的其他页面按下后退按钮后出现?

how to check if a view controller appeared after some other page in navigation controller pressed back button?

我在 detailViewController,当我按下后退按钮时,它会转到 mainViewController。如何在mainViewController中判断不是刚加载而是在detailViewController中按下了返回键?

我想在 mainViewController 中重新加载一个 table,因此我试图确定它是新加载的还是来自 detailViewController。任何帮助将不胜感激并投赞成票。谢谢。

覆盖 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()
}