viewDidLoad和viewDidAppear之间的区别

问题描述 投票:78回答:2

viewDidLoadviewDidAppear有什么区别?什么样的初始化或自定义代码进入这些功能?

例如presentModalViewController只在viewDidAppear出现而不在viewDidLoad上作品。

ios
2个回答
135
投票

当视图控制器首次加载到内存中时,viewDidLoad只调用一次。这是您希望实例化任何实例变量并构建在此视图控制器的整个生命周期中存在的任何视图的位置。但是,此时通常尚未显示视图。

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

见:https://developer.apple.com/documentation/uikit/uiviewcontroller


20
投票

简而言之,您可能希望在viewDidLoad中创建任何控件或数组,其中viewDidAppear是您想要刷新这些控件或数组的位置。

创建控制器时调用viewDidLoad一次,每次出现视图时都调用viewDidAppear。所以说你有一个你提出的模态视图,当该视图被解除时,将调用viewDidAppear,并且不会调用viewDidLoad

© www.soinside.com 2019 - 2024. All rights reserved.