Iphone iOS:如何知道viewDidLoad是否被调用?
是否有BOOL或其他方法可以知道是否调用了viewDidLoad: 每次视图进入活动状态时,我都需要更改视图属性,但如果该视图从未加载过,我不希望过早触发viewDidLoad:。如果无法轻松判断是否调用了viewDidLoad:,我只需在视图控制器init中添加一个名为loaded set to NO的BOOL,然后在输入active后更改视图属性(如果loaded为YES),或者在ViewWillDisplay中显示:如果loaded为NO,则将loaded设置为YES。使用。除此之外,它做的正是你想要的,关于它没什么好说的。文档非常简单,如下所示: 调用此方法将报告是否加载了视图。不像 属性,则不会尝试加载该视图(如果未加载) 已经在记忆中了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。使用。除此之外,它做
也许您应该在
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
不会被调用: