首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多次调用viewDidLoad/loadView

多次调用viewDidLoad/loadView
EN

Stack Overflow用户
提问于 2009-06-11 18:40:03
回答 4查看 5.9K关注 0票数 6

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

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

代码语言:javascript
复制
MainEditController *editController = [[MainEditController alloc] initWithNibName:@"MainEditView" bundle:nil];           
[self.navigationController pushViewController:editController animated:YES];         
[editController release];   

然后,我记录MainEditController'sviewDidLoadloadView方法(并调用它们各自的超级方法)。

'MainEditView‘nib包含3项:-文件所有者(类型为MainEditController),-First响应器(类型为UIResponder) -View (类型为UIView)

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

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-06-12 05:56:04

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

暗地里戳一下,但是如果没有loadView方法,就很难缩小问题的范围。

票数 14
EN

Stack Overflow用户

发布于 2009-06-12 05:35:41

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

票数 6
EN

Stack Overflow用户

发布于 2012-02-20 11:32:01

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/982877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档