呈现ViewController会导致呈现的控制器运行其viewDidLoad方法吗?
如果加载了view1并且显示了另一个。然后触发一些东西来呈现view1。它会运行viewDidLoad方法吗?
如果不是应该怎么做? ViewDidAppear?
答案 0 :(得分:4)
在Jesse转发的基础上,当视图加载到内存中时调用viewDidLoad
(通常是自应用程序启动以来第一次显示视图控制器 - 简化,但现在就足够了)。
当你显示其他视图控制器然后返回一些如何到这个原始的“view1”视图控制器时,除非有一个内存事件从内存中放弃它,它不会再次调用viewDidLoad
。
相反,它将按顺序调用以下内容:
viewWillAppear:
viewDidAppear:
在viewWillAppear:
中,您可以在显示视图控制器之前“在屏幕外”执行操作。
在viewDidAppear:
中,您可以执行适用于视图控制器视图已经可见的其他操作。例如,您希望运行一些用户将在视图控制器完全可见时看到的小动画。
在这两种方法中,请确保在执行任何操作之前调用super的实现。另外,要了解此生命周期,请在每个方法(viewDidLoad,viewWillAppear,viewDidAppear)中设置断点或NSLog()语句,以查看它们何时被调用。
在视觉控制器上的Apple文档中有一个值得花20分钟读取的概念 - 它将清除很多关于视图控制器的关键生命周期信息,这些是中心到iOS开发。请参阅:
中的“了解View Management LifeCycle”部分答案 1 :(得分:1)
viewDidLoad仅在视图加载到内存时调用。通常是它第一次出现(如果有内存转储等,可能会更频繁)。
每次viewController的视图成为窗口中的“活动”视图时,都会调用viewDidAppear: