initWithNibName VS viewDidLoad

时间:2012-01-04 23:05:10

标签: objective-c viewdidload

我一直试图理解我应该使用viewDidload的几个小时:当我应该使用initWithNibName:来设置我的viewController的属性。

例如,我正在使用TableViewController,并且我在initWithNibName中设置了它的所有属性(例如backgroundColor,separateColor,工具栏项)。这是正确的方法吗?

如果有人可以启发我。

由于

3 个答案:

答案 0 :(得分:12)

您应该在viewDidLoad中设置您的媒体资源。当控制器的视图加载到内存中时,系统会调用此方法。当您从nib文件创建控制器实例时,initWithNibName:调用的内容。

也就是说,如果您在initWithNibName:中设置了属性,而是调用init,那么您的控制器可能不会处于良好状态;因此,最好在viewDidLoad中进行。

答案 1 :(得分:3)

您应该使用控制器的viewDidLoad:方法。引用Apple关于initWithNib的文档:

  

您指定的nib文件不会立即加载。它是在第一次访问视图控制器的视图时加载的。如果要在加载nib文件后执行其他初始化,请覆盖viewDidLoad方法并在那里执行任务。

答案 2 :(得分:3)

initWithNibName:在加载并实例化NIB时调用。

viewDidLoad:在您的视图实际显示在屏幕上时调用。

是的 - 我相信在你的情况下,设置颜色等最好在initWithNibName中完成