2014-11-03 79 views
0

我想知道什么时间是完全创建UIViewController的.view属性。UIviewcontroller - 视图属性何时实例化?

我创建了一个视图控制器,并在init(编码器:aDecoder)我开始建立一些变量。当我试图设置viewController.view.backgroundColor它崩溃。 我在viewDidLoad中放置了相同的代码行,它工作。

这是我的代码

class WebViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     println("didload") 
     self.view.backgroundColor = UIColor.redColor() 
    } 


    required init(coder aDecoder: NSCoder) { 
     println("init Coder") 
     super.init(coder: aDecoder) 
     self.tabBarItem.title = nil 
     //self.view.backgroundColor = UIColor.redColor() // CAUSE CRASH 
    } 
} 

这是错误:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </Users/Mari/Library/Developer/CoreSimulator/Devices/A9CC10D9-409E-4604-A6F7-B3729E0B3D52/data/Containers/Bundle/Application/F5DFDFE6-87B9-40AF-A26B-7B5A1506D203/test.app> (loaded)' with name '9pv-A4-QxB-view-tsR-hK-woN'' 
期间

初始化编码器的VC被实例化,标签栏可以设置导致它从根视图控制器的(一个标签栏控制器),但该视图是VC的一个属性,因此在初始化过程中,尚未准备好设置。我对吗?

so ...什么时候视图属性被exactely实例化? 什么时候设置它的最佳时机?

+1

viewDidLoad中,顾名思义,是视图加载到内存后立即调用,所以这是做你的看法额外设置的最佳场所。 – rdelmar 2014-11-03 15:55:08

回答

1

视图在初始化程序(在您的情况下为init(coder aDecoder: NSCoder))和viewDidLoad之间实例化。

在此期间,iOS会从您的IB文件加载UI组件。作为开发者,您可以在viewDidLoad中自定义视图(例如更改颜色)。

有关视图控制器生命周期的更多信息,请参见documentation