Iphone iOS:如何知道viewDidLoad是否被调用?

Iphone iOS:如何知道viewDidLoad是否被调用?,iphone,ios,uiviewcontroller,viewdidload,viewwillappear,Iphone,Ios,Uiviewcontroller,Viewdidload,Viewwillappear,是否有BOOL或其他方法可以知道是否调用了viewDidLoad: 每次视图进入活动状态时,我都需要更改视图属性,但如果该视图从未加载过,我不希望过早触发viewDidLoad:。如果无法轻松判断是否调用了viewDidLoad:,我只需在视图控制器init中添加一个名为loaded set to NO的BOOL,然后在输入active后更改视图属性(如果loaded为YES),或者在ViewWillDisplay中显示:如果loaded为NO,则将loaded设置为YES。使用。除此之外,它做

是否有BOOL或其他方法可以知道是否调用了viewDidLoad:

每次视图进入活动状态时,我都需要更改视图属性,但如果该视图从未加载过,我不希望过早触发viewDidLoad:。如果无法轻松判断是否调用了viewDidLoad:,我只需在视图控制器init中添加一个名为loaded set to NO的BOOL,然后在输入active后更改视图属性(如果loaded为YES),或者在ViewWillDisplay中显示:如果loaded为NO,则将loaded设置为YES。

使用。除此之外,它做的正是你想要的,关于它没什么好说的。文档非常简单,如下所示:

调用此方法将报告是否加载了视图。不像 属性,则不会尝试加载该视图(如果未加载) 已经在记忆中了


也许您应该在
viewDidLoad
中初始化UIView,然后在
viewWillLayoutSubviews
中以您需要的任何方式对其进行更改,这是对这个问题的迂腐回答。如果您想知道何时触发了
viewDidLoad
,则必须在视图控制器中实现
viewDidLoad

- (void)viewDidLoad
{
    [super viewDidLoad];

    viewDidLoadCalled = YES; // Not actually the best way to do this...
    // Set up more view properties
}
但正如Tommy所说,您实际上需要使用
isViewLoaded
。这就解决了像这样检查的问题

if (!self.view) {
    // do something
}
通过询问而无意中加载视图

请注意,当
视图出现时:
被调用,视图将始终已加载。此外,在旧版本(我认为是iOS 6之前)上,视图可以在视图控制器的生命周期内卸载和重新加载多次。有关旧的行为,请参阅非常好的“大书呆子牧场”视图生命周期图。在iOS 6+中几乎相同,只是在内存不足的情况下视图不会卸载,并且
viewDidUnload
不会被调用: