如何确定第一次启动UIViewController?

我有一个ViewControllers层次结构,以UINavigationViewController为根。
如何判断某些ViewController是第一次启动还是由于导航堆栈的展开而启动?

假设您希望知道在首次显示视图控制器时是否正在调用viewWillAppear:viewDidAppear:或者由于另一个视图控制器已被关闭而显示它,您可以轻松执行以下操作:

 override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) if isBeingPresented() || isMovingToParentViewController() { // This is the first time this instance of the view controller will appear } else { // This controller is appearing because another was just dismissed } } 

当您在导航堆栈上推送新的viewcontroller时,它首次实例化,当您从堆栈中弹出它时,它将被释放或释放。 所以当你推或前进然后它是第一次但是当你回到之前的任何视图控制器时,那么当前的vc已经在内存而不是第一次!