多次调用viewDidLoad/loadView

Rob*_*son 6 iphone

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

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

MainEditController *editController = [[MainEditController alloc] initWithNibName:@"MainEditView" bundle:nil];           
[self.navigationController pushViewController:editController animated:YES];         
[editController release];   
Run Code Online (Sandbox Code Playgroud)

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

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

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

我认为两者viewDidLoadloadView会得到被称为控制器内的许多意见(1在这种情况下),但似乎并没有成为一个有效的假设.

Nil*_*ect 14

你的loadView方法是在呼叫[super loadView]吗?如果没有,则视图属性可能未正确设置,因此time .view访问下一个属性,它会尝试再次加载它.

在黑暗中刺伤,但没有这种loadView方法,很难缩小可能存在的问题.

  • loadView的文档说明:此方法的自定义实现不应调用super. (6认同)

Cyn*_*ing 6

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