在我以编程方式启动的一个视图中,我看到了5个对'loadView/viewdidLoad‘的不同调用,但我不明白为什么要调用这么多。有人能给我解释一下这背后的机制吗?
我用以下方式在父UIViewController ( TabBar + NavigationBar应用程序的一部分)实例中启动视图:
MainEditController *editController = [[MainEditController alloc] initWithNibName:@"MainEditView" bundle:nil];
[self.navigationController pushViewController:editController animated:YES];
[editController release]; 然后,我记录MainEditController's、viewDidLoad和loadView方法(并调用它们各自的超级方法)。
'MainEditView‘nib包含3项:-文件所有者(类型为MainEditController),-First响应器(类型为UIResponder) -View (类型为UIView)
视图插座连接到文件的所有者,并且视图中没有元素。我打算做的是在主视图中添加几个子视图,并根据特定条件显示其中一个子视图。
我以为viewDidLoad和loadView都会在控制器中调用一样多的视图(在本例中是1个),但这似乎不是一个有效的假设。
发布于 2009-06-12 05:56:04
您的loadView方法是否在调用[super loadView]?如果不是,则可能是视图属性设置不正确,因此访问下一个time .view时,它会再次尝试加载它。
暗地里戳一下,但是如果没有loadView方法,就很难缩小问题的范围。
发布于 2009-06-12 05:35:41
我不确定这是否是你所看到的,但如果应用程序收到内存不足的警告,导航控制器将释放当前不可见的视图来重新获得内存。当视图再次变为可见时,将重新创建该视图,这将调用loadView。
发布于 2012-02-20 11:32:01
我通过删除-(void)loadView方法解决了同样的问题。如果您创建的UIViewController没有使用nib文件,此方法将自动添加到代码中。
https://stackoverflow.com/questions/982877
复制相似问题