2011-12-04 113 views
58

當手動加載視圖時,開發人員在初始化時保持控制權,我們選擇要調用的初始化程序,設置哪些變量等。如何通過故事板加載時初始化視圖?

當視圖從故事板segue加載時會發生什麼?初始化?應該在哪裏設置變量,我希望在視圖加載後可用?

請幫我理解這裏的順序。這裏創建的類的實例是如何創建的?我們如何介入並幫助設置它以滿足我們的喜好?

回答

89

當從一個筆尖或故事板加載視圖時,它將調用-initWithCoder:方法。與-initWithFrame:類似,-initWithCoder:是UIView的指定初始值設定項。如果您要爲UIView子類進行任何自定義初始化,則應確保這兩種方法都發生這種情況。一種常用的技術是添加一個通用的初始化方法,您可以從-initWithFrame:-initWithCoder:中調用。有關更詳細的描述,請參見my answerCustom view and implementing init method?

注意,對於-initWithFrame:的文檔解釋:

如果您使用Interface Builder來設計自己的界面,是不是 當您的視圖對象隨後從筆尖 文件加載調用此方法。重新創建nib文件中的對象,然後使用它們的initWithCoder:方法初始化 ,該方法修改視圖的屬性 以匹配存儲在nib文件中的屬性。