多次调用viewDidLoad/loadView
在我以编程方式启动的其中一个视图中,我看到5个不同的呼叫'loadView
/viewdidLoad
',但我不明白为什么会有这么多人被调用。有人能向我解释这背后的机制吗?多次调用viewDidLoad/loadView
我启动视图在父UIViewController
(一个TabBar
+ NavigationBar
应用程序的一部分)例如以如下方式进行:
MainEditController *editController = [[MainEditController alloc] initWithNibName:@"MainEditView" bundle:nil];
[self.navigationController pushViewController:editController animated:YES];
[editController release];
我然后登录MainEditController's
viewDidLoad
和loadView
方法(以及调用它们各自的超级方法) 。
在 'MainEditView
' 笔尖包含3项: -File的拥有者(MainEditController
类型的), - 第一 抢答(UIResponder
类型的) -View(UIView
类型的)
视图出口连接到文件的所有者和视图中没有任何元素。我打算做的是在主视图中添加多个子视图,并根据特定条件显示其中一个子视图。
我认为viewDidLoad
和loadView
会在控制器中调用尽可能多的视图(在这种情况下为1),但这似乎不是一个有效的假设。
是你的loadView
方法调用[super loadView]
?如果没有,视图属性可能没有正确设置,所以下一个time .view
被访问,它会尝试再次加载它。
刺在黑暗中,但没有loadView
方法,很难缩小可能存在的问题。
loadView状态的文档:此方法的自定义实现不应调用超级。 – 2010-01-14 14:34:37
我不确定这是否是您所看到的,但如果应用程序接收到低内存警告,导航控制器将释放当前不可见的视图以重新获得内存。当视图再次可见时,重新创建视图,该视图调用loadView。
将视图控制器的视图属性设置为有效视图。
我通过删除-(void)loadView
方法来解决同样的问题。如果您创建不带nib文件的UIViewController
,则此方法将自动添加到代码中。
有没有可能发布您的MainEditController loadView函数? – marcc 2009-06-11 19:36:00