Interface Builder で View Controller nib のデフォルトの View Outlet を設定する際に問題があります。これが私のセットアップです:
ナビゲーション コントローラーをモーダル ビューとして読み込む TabBar ベースのアプリケーションがあります。
MyNavCtrlrSubClass *menu = [[MyNavCtrlrSubClass alloc]initWithNibName:@"MenuController" bundle:nil];
[tabBarController presentModalViewController:menu animated:anim];
MenuController 自体は次のように構成されています。
MenuController.xib ファイルの所有者 (MyNavCtrlrSubClass : UIViewController) ナビゲーションコントローラー (UINavigationController) ナビゲーション バー (UINavigationBar) ルート ビュー コントローラー (Nib 名は AnotherViewController.nib をロードするように設定されています) ナビゲーション項目 -> (UINavigationItem)
MyNavCtrlrSubClass が読み込まれるときに次のエラーが発生することを除いて、これはすべて正常に機能します。
Loaded the "MenuController" nib but the view outlet was not set
これが起こっている理由は明らかです。ファイルの所有者には、そのビューのアウトレット接続がありません。問題は、そのビューとして何を設定する必要があるかということです。そもそも何かを設定する必要がありますか? Navigation Bar は MenuController.xib の唯一の候補ですが、これを行うと、いわば UINavigationBar 自体のサイズがフルスクリーン モードになります。
私は明らかにIBで何かが欠けていますが、何ですか?MyNavCtrlrSubClass.m には、UINavigationController の IBOutlet を除いて、コード自体はありません。IB でこれを完全に設定しようとして間違いを犯していますか? アイデアは、モーダル ナビゲーション コントローラーを 1 つのペン先に保持し、それがロードするすべてのビューを別々のペン先に保持することですが、MenuController はナビゲーションの単なるコンテナーであり、ビュー自体は含まれていないため、明らかに設計が間違っています。:)
なぜ私が別の方法で設計しないのか疑問に思っているのであれば、それは、理想的な階層を構築するよう IB がどのように求めているかについて、私の (おそらく間違った) 認識に従おうとしているからです。
どんな助けでも大歓迎です。