UIView
独自の XIB を持つベース クラスがあります。このクラスを呼び出しましょうMyClass
。だから私はMyClass.xib
、MyClass.h
そしてを持っていMyClass.m
ます。
ストーリーボードに UIView オブジェクトがあり、そのオブジェクトのクラスを に設定しましたMyClass
。
新しいUIView
XIB を作成し、XIB 内でファイル所有者のクラスを に変更しましたMyClass
。XIB 内でさらに接続を行う必要があるかどうかはわかりません。
私が欲しいのはこれです:ストーリーボードが読み込まMyClass.m
れ、それが読み込まれますMyClass.xib
。そのため、この初期化コードがあります:
- (instancetype)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
NSString *className = NSStringFromClass([self class]);
self.view = [[[NSBundle mainBundle] loadNibNamed:className owner:self options:nil] firstObject];
[self addSubview:self.view];
return self;
}
return nil;
}
問題は、このコードが無限ループに入ることです。もう一度loadNibNamed
電話をかけるinitWithCoder:
と、アプリがクラッシュします。
それ、どうやったら出来るの?なぜループなのか、xib 内で作成する必要がある接続は他にありますか?