多次调用viewDidLoad / loadView

时间:2009-06-11 18:40:03

标签: iphone

在我以编程方式启动的其中一个视图中,我看到了对“loadView / viewdidLoad”的5个不同调用,但我不明白为什么要调用这些调用。有人可以向我解释一下这背后的机制吗?

我以下列方式在父UIViewControllerTabBar + NavigationBar应用程序)实例的一部分中启动视图:

MainEditController *editController = [[MainEditController alloc] initWithNibName:@"MainEditView" bundle:nil];           
[self.navigationController pushViewController:editController animated:YES];         
[editController release];   

然后我记录MainEditController's viewDidLoadloadView方法(并调用各自的超级方法)。

'MainEditView'笔尖包含3个项目: -File的所有者(类型MainEditController), - 第一响应者(类型UIResponder) -View(类型UIView

视图插座连接到文件所有者,视图中没有元素。我打算做的是在主视图中添加几个子视图,并根据特定条件显示一个子视图。

我认为viewDidLoadloadView会在控制器内被调用多个视图(在本例中为1),但这似乎不是一个有效的假设。

4 个答案:

答案 0 :(得分:14)

您的loadView方法是否正在调用[super loadView]?如果没有,视图属性可能没有正确设置,因此访问下一个time .view,它会尝试再次加载它。

在黑暗中刺伤,但没有loadView方法,很难缩小可能出现的问题。

答案 1 :(得分:6)

我不确定这是否是您所看到的,但如果应用程序收到内存不足警告,导航控制器将释放当前无法恢复内存的视图。当视图再次可见时,将重新创建视图,该视图将调用loadView。

答案 2 :(得分:1)

我通过删除-(void)loadView方法解决了同样的问题。如果在没有nib文件的情况下创建UIViewController,则此方法将自动添加到代码中。

答案 3 :(得分:0)

将视图控制器的view属性设置为有效视图。