1. 程式人生 > >VIEWCONTROLLER的啟動流程

VIEWCONTROLLER的啟動流程

super 而且

ViewController的啟動流程: init/initWithCoder -> awakeFromNib -> loadView -> viewDidLoad -> viewWillApear -> viewDidApear

init

用代碼創建的View或者ViewController使用這個初始方法

initWithCoder

使用IB創建的View或者ViewController使用這個初始方法

loadView

loadView是ViewController中的一個方法,而且沒有必要就永遠不能主動調用這個函數。

因為ViewController會在view Property

(The view that the controller manages.)被請求且view的值為nil的時候調用這個函數。

如果是使用IB創建view並初始化ViewController則應該使用init withNibName: bundle:方法,而且不應該重載loadView函數。

如果是使用如果代碼手動創建該ViewController中的view則應該重載這個函數,而且不必調用[super loadView]

awakeFromNib

當.nib文件被加載的時候,會發送一個awakeFromNib的消息到.nib文件中的每個對象,每個對象都可以定義自己的awakeFromNib函數來響應這個消息,執行一些必要的操作。也就是說通過nib文件創建view對象是執行awakeFromNib。

如果通過代碼手動創建該viewController則不執行awakeFromNib

viewDidLoad

在viewController加載了相關的view之後被調用,且viewDidLoad無論通過什麽途徑加載(實例化)都會執行這個方法。

awakeFromNib和loadView都是在viewDidLoad之前執行的。

如有錯誤或不足請指正


VIEWCONTROLLER的啟動流程