2014-02-17 71 views
1

我在Interface Builder中使用UITextField的子類來構建我的視圖(所以我直接在Interface Builder中將此對象的類設置爲MyCustomTextField)。initWithCoder如何與Interface Builder結合使用?

現在,我明白,當視圖被加載時,initWithCoder:方法MyCustomTextField將被調用,以便我可以做一些初始化的東西。但是,我還發現,使用屬性檢查器在Interface Builder中設置的屬性未按照我設置的方式進行初始化!

有誰知道爲什麼會出現這種情況,以及我如何設置MyCustomTextField實例的屬性爲我在Interface Builder中的屬性檢查器中設置的值?

+2

UI類的大多數初始化應該發生在'awakeFromNib'方法中,而不是'init'中。是否可以將「初始化內容」移動到該方法中? –

回答

0

您可能不會調用[super initWithCoder:coder]從您的自定義重寫此方法。在這個超級實現中,數據從nib歸檔文件加載到UIView實例中。正確的實現應該如下所示:

- (id)initWithCoder:(NSCoder *)aDecoder 
{ 
    self = [super initWithCoder:aDecoder]; 
    if (nil != self) { 
     // extra initialization code 
    } 
    return self; 
}