92

viewDidLoad和 和有什么不一样viewDidAppear?什么样的初始化或自定义代码进入这些函数?

例如presentModalViewController,仅在出现在viewDidAppear而不是在 上时才有效viewDidLoad

4

2 回答 2

154

viewDidLoad当视图控制器第一次加载到内存中时,只调用一次。这是您想要实例化任何实例变量并构建在此视图控制器的整个生命周期中存在的任何视图的地方。但是,此时视图通常还不可见。

viewDidAppear当视图实际可见时调用,并且可以在视图控制器的生命周期内多次调用(例如,当模态视图控制器被关闭并且视图再次可见时)。这是您想要在 UI 中执行任何布局操作或进行任何绘图的地方 - 例如,呈现模态视图控制器。但是,您在这里所做的任何事情都应该是可重复的。最好不要在此处保留东西,否则当视图消失时不释放它们会导致内存泄漏。

请参阅:https ://developer.apple.com/documentation/uikit/uiviewcontroller

于 2012-06-29T00:37:52.613 回答
22

简而言之,您会想要在 中创建任何控件或数组viewDidLoadviewDidAppear其中您想要刷新这些控件或数组的位置是 in。

viewDidLoad在创建控制器时调用一次,并viewDidAppear在每次出现视图时调用,好吧,DID 出现。因此,假设您有一个模态视图,当该视图被关闭时,viewDidAppear将被调用,并且viewDidLoad不会被调用。

于 2012-06-29T00:30:43.767 回答