私はUIView
インターフェースビルダーを持っています。私のView Controllerには、インターフェイスビルダーIBOutlet MyUIView
の を指す があります。UIView
のクラスUIView
を " MyUIView
" (カスタム UIView クラス)に変更しましたinit
が、サブクラスのメソッドがどれも起動されていないようです。
私は何を間違っていますか?
私はUIView
インターフェースビルダーを持っています。私のView Controllerには、インターフェイスビルダー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:
ドキュメントから:
Interface Builder を使用してインターフェイスを設計する場合、ビュー オブジェクトが後で nib ファイルから読み込まれるときに、このメソッドは呼び出されません。nib ファイル内のオブジェクトは、再構成された後、initWithCoder: メソッドを使用して初期化されます。このメソッドは、ビューの属性を nib ファイルに保存されている属性と一致するように変更します。
nib / xib / Storyboard ファイルを使用している場合は、initWithCoder:
. ビューをプログラムで作成している場合は、init
またはを使用できますinitWithFrame:
。