2013-03-09 27 views
0

我一直在iOS 6中使用UIViewControllers。但是有一件事我不是很瞭解。我們什麼時候使用像initWithNibName,awakeFromNib和setup這樣的方法?它們與viewDidLoad有何區別,viewWillAppear?有人可以解釋在iOS中使用initWithNibName給我嗎?

+1

看一看蘋果的[視圖控制器編程指南適用於iOS(http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html)。 – 2013-03-09 22:34:02

回答

3

-initWithNibName:bundle:是基於XIB的UIViewControllers的標準初始化程序。它直接與Cocoa-Touch的其餘部分(保存一些異常值)進行對比,這些異常值在被存檔時發送-initWithCoder:。請注意,此時尚未開始安裝工作。當然,超級調用通過啓動NSCoder來「解凍」你的XIB,但是你沒有有效的視圖實例,並且不應該嘗試在這個方法中設置一個。

-awakeFromNib:在給定類已經「解凍」並由NSCoder初始化後立即調用。在這一點上,你仍然沒有一個有效的視圖插座等任何視圖相關的設置(添加子視圖,設置根視圖等性能)應該做到無論在-loadView(唯一的方法中,你應該是有史以來分配給self.view)或-viewDidLoad

-viewWill/DidAppear是在關聯視圖設置爲root時,或者當導航堆棧中的上方視圖彈出時發送的外觀方法(不一定是初始化的指示器)。