私は私の最後の質問をフォローアップするために新しい質問を開いています(サブビューを追加した後のsuperviewとparentviewcontrollernil)。基本的に、サブビューを使用することは良い考えですが、別のViewController内にあるサブビューを制御するViewControllerを使用するべきではありません。基本的に私は次のことをしたいと思います...私は共通のサブビューを共有する2つのViewControllerを持っています。そのサブビューをSearchDate.xibというペン先として作成しました。ファイルの所有者は、対応するクラスSearchDateView.m/hです。そのクラスには、ラベルであるnibのUIView内の唯一の要素のアウトレットがあります。SearchDateViewクラスには、SearchDateView.xibのラベルの値を変更するための関数もあります。両方のViewControllerにこのペン先をロードしたいのですが、どうやらペン先を適切にロードする方法がわかりません。私が何をしても、せいぜい何も表示されず、最悪の場合、例外がスローされます。アップルのドキュメントでは、IB内のクラスの他のインスタンスをメインビューにドラッグすることについて説明していますが、それはうまくいかないようです。ViewControllerにSearchDateViewアウトレットがあり、コントローラーのロードビューでこれを実行してみました。
searchDateView = [[[NSBundle mainBundle] loadNibNamed:@"SearchDateView" owner:self options:nil] objectAtIndex:0];
[[self view] addSubview:searchDateView];
しかし、私はこの例外を受け取ります:
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<MainViewController 0x431fac0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key searchDateLabel.'
私は完全に間違ったことをしていることを知っていますが、ペン先、そのペン先のオブジェクトの一部を更新する関連付けられたビュークラスを持ち、そのペン先を別のコントローラーで再利用する正しい方法は何ですか?
編集:コメントを考えると、おそらくこれは十分に明確ではありませんでした。ビュー全体に同じnibファイルを使用したくはありません。サブビューではありません。たとえば、コントローラーAにはマップとSearchDateViewがあり、コントローラーBにはテーブルビューとSearchDateViewがあります。だから私はサブビューを複数のコントローラーにロードする方法を考えています...