私は iOS 開発の初心者で、ファイル所有者のロジックを理解するのに問題があります。
私はこの状況を持っています:
2 つのビュー (View_iPad、View_iPhone) とそれらのコントローラー (ViewController_iPad、ViewController_iPhone) があります。アプリが起動されるデバイスに基づいて、特定のビューとそのコントローラーが使用されます。次に、xib ファイルからこのビューにサブビューを追加します (iPad ビューと iPhone ビューのどちらを使用するかは関係ありません)。iPad ビューと iPhone ビューで、このサブビューの位置が異なるとします。このサブビューにはいくつかのラベルが含まれているため、サブビュー コントローラーで IBOulets を作成する必要があります。
アップルのロジックによれば、ビューのファイル所有者はコントローラー(このビューにアクセスして通信できるファイル)です。したがって、3 つのビュー (iPhone、iPad、サブビュー) のそれぞれに独自のコントローラーがあり、これらのコントローラーがこれらのビューのファイル所有者であることを意味します。
しかし、サブビューをコードでロードすると:
NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"subview" owner:self options:nil];
サブビューとして iPad/iPhone ビューに追加すると、このサブビューにはラベル用の IBOutlets が含まれており、このラベルは iPhone/iPad コントローラーではなくサブビュー コントローラーにあるため、問題が発生します。
このエラーは次のように表示されます。
キャッチされていない例外 'NSUnknownKeyException' が原因でアプリを終了しています。
どうすればこれを解決できますか? @"subviewController" を所有者として入れようとしましたが、役に立ちませんでした。ありがとうございました。
編集!!: だから私はこれを解決しようとしていましたが、それでもうまくいきません。ここに新しい状況があります:
サブビュー コントローラーはサブビューの所有者ですが、ルート ビューのカスタム クラスは、アウトレットを含む (UIView から派生した) クラスです。
iPad/iPhone コントローラー所有者:@"subviewController" にある場合、次のエラーが発生しました。
キャッチされていない例外 'NSUnknownKeyException' が原因でアプリを終了しています。
ビューはサブビューコントローラーのプロパティです。どこに問題があるのか教えてください。私は本当に絶望的です!
または、owner:self がある場合、EXC_BAD_ACCESS エラーで指示のあるウィンドウが開かれます。