2013-08-04 46 views
10

爲了初始化具有xib的視圖,我使用initWithCoder函數。但是如果我需要用自定義參數初始化xib會怎麼樣。使用自定義initWithCoder初始化視圖

我需要的是這樣的:

- (id)initWithCoder:(NSCoder *)aDecoder 
      andTitle:(NSString *)titleString 
{ 
    self = [super initWithCoder:aDecoder]; 
    if (self) { 
     self.titleLabel = titleString; 
    } 
    return self; 
} 

而當我把它? awakeFromNib之後?

回答

11

您不能修改initWithCoder:這樣的方法,因爲該方法是在您不控制的協議中定義的。相反,您需要在對象創建完成後調用setTitle:方法,或者在awakeFromNib或擁有的控制器中調用setTitle:方法。

+0

您不會在awakeFromNib中設置自定義字段 – Chisx

+0

@SÄN爲什麼您不要在awakeFromNib中設置標籤的文本? – Wain

9

您通常不會自己調用initWithCoder,因此您無法將自定義參數傳遞給它。該方法將由nib加載機制調用,並且您無法控制它。

你當然不會從awakeFromNib調用它 - 該對象已經被該點初始化,所以你不能重新調用它。

最簡單的解決方案是將您的自定義參數作爲屬性公開,並在創建視圖後將其設置。

+1

同意,我當然希望我可以創建一個自定義的初始化方法來傳遞參數,所以它一次性發生。 –

+0

Swift怎麼樣...如果我想在initwithcoder方法中傳遞我的自定義屬性,我想聲明爲let ....我怎麼做? –

相關問題