6

人々が以前にこのような質問をしているのを見て、申し訳ありません。しかし、私は指示に従ってあまり運がありませんでした。xib ファイルを使用してカスタム ビューを作成し、それを別のビュー コントローラーの xib ファイルで再利用することに興味があります。

既存の投稿:

別の 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 に変更すると、無限再帰が発生しました。何度も何度もリロードしているだけなので、これは理にかなっています。

これらの以前の投稿から何を見逃したのかわかりませんが、ガイダンスをいただければ幸いです。ありがとう!

4

1 に答える 1

1
Terminating app due to uncaught exception 'NSUnknownKeyException', reason: 
'[<UIView 0x548ff00> setValue:forUndefinedKey:]:

上記の理由はerror通常、実装クラス内の対応するオブジェクトを持つオブジェクトでInterface Builderある内の接続の失敗が原因です。UIViewControllerですべての接続を確認してくださいInterface Builder。また、ファイル内のファイル所有者も確認してxibください。

これで問題が解決することを願っています。

于 2013-09-17T09:24:00.200 に答える