2
這似乎發生在我使用nib文件加載視圖時。我需要設置一些自定義視圖的數據源和代理程序。只有當我將它們設置在viewDidLoad方法中時,它們才能工作。在初始化程序中設置它們,awakeFromNib等都會失敗。有誰知道這個的原因?爲什麼有些UIViewController屬性在沒有使用viewDidLoad進行設置時變爲零?
這似乎發生在我使用nib文件加載視圖時。我需要設置一些自定義視圖的數據源和代理程序。只有當我將它們設置在viewDidLoad方法中時,它們才能工作。在初始化程序中設置它們,awakeFromNib等都會失敗。有誰知道這個的原因?爲什麼有些UIViewController屬性在沒有使用viewDidLoad進行設置時變爲零?
當您從nib文件創建視圖控制器時,UIViewController首先被初始化並加載。所以當initWithNibName:bundle:
方法被稱爲self.view
和從筆尖加載的任何其他視圖將是nil
。也可能發生視圖被卸載(請參閱viewDidUnload
)。這就是爲什麼需要在viewDidLoad
中發生與視圖相關的初始化的原因。
這條規則是否有例外? –
我讀過文檔,但對nib文件加載的清晰和簡潔的解釋將工作:它是︰發送所有對象分配消息,發送所有對象initWithCoder或初始化..最終調用viewDidLoad –
有關於此的文檔和大量文檔。有時候,感覺有太多了。閱讀「資源編程指南」的NIB文件部分:https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html#//apple_ref/doc/uid/10000051i- CH4-SW8 – Snowcrash