簡體   English   中英

對UIView進行子類化。 永遠不會調用init方法

[英]Subclassing a UIView. init method is never called

我在界面構建器上有一個UIView 在我的視圖控制器中,我有一個IBOutlet MyUIView ,它指向界面構建器上的UIView

我將UIView的類更改為“ MyUIView ”(自定義UIView類),但似乎沒有觸發子類的init方法。

我究竟做錯了什么?

而不是init你需要先調用initWithCoder然后調用init作為:

- (id)initWithCoder:(NSCoder *)aDecoder {
    if ((self = [super initWithCoder:aDecoder])) {
        [self baseClassInit];
    }
    return self;
}

- (void)baseClassInit {

    //initialize all ivars and properties    
}

簡短的回答:你需要使用initWithCoder: .

來自initWithFrame: docs:

如果使用Interface Builder設計接口,則隨后從nib文件加載視圖對象時不會調用此方法。 重構nib文件中的對象,然后使用其initWithCoder:方法進行初始化,該方法修改視圖的屬性以匹配存儲在nib文件中的屬性。

如果您使用的是nib / xib / Storyboard文件,請使用initWithCoder: . 如果您以編程方式創建視圖,則可以使用initinitWithFrame: .

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM