我有兩個筆尖:Parent.xib和Child.xib。在nib中加載nib時,爲什麼awakeFromNib被調用兩次?
我已經在子筆尖內包含了子筆尖以簡化綁定。我在loadView中以編程方式設置子視圖。問題是,awakeFromNib在Child的控制器中被調用兩次。
我想我明白爲什麼會發生這種情況。當Parent完成加載時,它將awakeFromNib發送到它的對象,並且由於Child是其筆尖的文件所有者,因此它也會自行調用awakeFromNib。
我理解這個權利嗎?我原本以爲awakeFromNib每個實例只能調用一次。我不應該將筆尖嵌入筆尖嗎?
見樣本項目:https://github.com/panupan/AwakeFromNibTest
假設我想在兩個nib中使用NSObjectController。鏈接它們的最好方法是通過代碼綁定它們嗎?我將一個筆尖嵌入另一個筆尖的原因是無需編寫代碼即可實現綁定。謝謝。 – panupan 2012-07-21 02:00:27
您爲'NSObjectController'實例創建一個'IBOutlet'。然後在'awakeFromNib'中使用'-setContent:'將對象控制器綁定到您希望它在另一個nib文件中表示的對象。在Interface Builder中,您可以設置控制器代表的對象的類以及您將使用的任何鍵。然後,您可以使用綁定到您的nib文件中的對象控制器,就好像它是原始對象一樣。在IB中,將控制器鍵設置爲「選擇」,並將模型鍵路徑設置爲原始對象上的任何鍵。 – 2012-07-21 08:17:14
謝謝,我會給它一個鏡頭。 – panupan 2012-07-21 13:56:53