人々が以前にこのような質問をしているのを見て、申し訳ありません。しかし、私は指示に従ってあまり運がありませんでした。xib ファイルを使用してカスタム ビューを作成し、それを別のビュー コントローラーの xib ファイルで再利用することに興味があります。
既存の投稿:
xib と UIView サブクラスを一緒に使用する方法は?
私はすでに持っています:
- カスタム xib ファイル (CustomView.xib と呼びましょう) と、対応する .h および .m クラス ファイルを作成しました。
- xib ファイルのファイルの所有者を CustomView に設定します。
- 他のビューを子としてトップレベルの UIView を作成しました (UILabel など)
- 注これには、コードで記述されたカスタムビューでもある子 UIView があります
- IBOutlets の配線
- ViewController.xib ファイルを作成しました
- UIView を追加し、クラスを CustomView に設定し、それを配線しました
これにより、アプリケーションをビルドすると空白のビューが表示されます。
次に、CustomView の initWithDecoder メソッドをオーバーライドし、以下を追加するという上記の投稿の 1 つを試してみました。
NSArray *subviewArray = [[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:self options:nil];
UIView *mainView = [subviewArray objectAtIndex:0];
[self addSubview:mainView];
残念ながら、これにより次のエラーが発生しました。
Terminating app due to uncaught exception 'NSUnknownKeyException', reason:
'[<UIView 0x548ff00> setValue:forUndefinedKey:]:
これは、CustomView.xib の最上位ビューを CustomView クラスに設定しなかったことが原因であると考えました。そのため、それを CustomView に変更すると、無限再帰が発生しました。何度も何度もリロードしているだけなので、これは理にかなっています。
これらの以前の投稿から何を見逃したのかわかりませんが、ガイダンスをいただければ幸いです。ありがとう!