[英]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:
. 如果您以編程方式創建視圖,則可以使用init
或initWithFrame:
.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.