2014-11-03 59 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

相關問題