viewDidLoad
和viewDidAppear
之间有什么区别?什么样的初始化或自定义代码进入这些功能?
e.g。 presentModalViewController
只有在viewDidAppear
而不是viewDidLoad
时才有效。
答案 0 :(得分:135)
viewDidLoad
只调用一次。这是您希望实例化任何实例变量并构建在此视图控制器的整个生命周期中存在的任何视图的位置。但是,此时通常尚未看到该视图。
viewDidAppear
,并且可以在视图控制器的生命周期中多次调用(例如,当模式视图控制器被关闭并且视图再次可见时)。您可以在此处执行任何布局操作或在UI中执行任何绘图 - 例如,呈现模态视图控制器。但是,你在这里做的任何事都应该是可重复的。最好不要在这里保留内容,否则如果在视图消失时不释放内存,就会出现内存泄漏。
请参阅:https://developer.apple.com/documentation/uikit/uiviewcontroller
答案 1 :(得分:20)
简单地说,您可能希望在viewDidLoad
中创建任何控件或数组,其中viewDidAppear
是您想要刷新这些控件或数组的位置。
viewDidLoad
一次,每次出现视图时都会调用 viewDidAppear
。因此,假设您有一个模态视图,当该视图被取消时,将调用 viewDidAppear
,并且不会调用 viewDidLoad