XIB ファイルからインターフェイスを取得するビューを表示することについて、私が理解していない基本的なことがあります。
私のアプリのルート ビュー コントローラーは UITabBarController です。タブ バー オプションの 1 つは、UINavigationController 制御のビューを表示します。そのビューのナビゲーション バーの 1 つに、新しい項目を追加するためのプラス (+) ボタンがあります。AddItem ビューをモーダル ビューとして表示したいので、そのインターフェイスを AddItemView.xib ファイルから取得する必要があります。その XIB ファイルには、Navigation Controller が含まれています。
ただし、ナビゲーション バーは表示されません。そのプラスボタンをクリックしたときに呼び出される関数は次のとおりです。
- (void)showNewView:(UIViewController *)viewController
{
AddItemViewController *vc = [[AddItemViewController alloc] initWithNibName:@"AddItemViewController" bundle:nil];
//viewController is the UIViewController on which the plus button was tapped
[viewController.navigationController presentModalViewController:vc animated:NO];
}
私が得るのは白い画面だけです。AddItemViewController の viewDidLoad で何かをする必要がありますか? XIB の UINavigationController インスタンスに何かを接続する必要がありますか?
これはすべて、MainWindow.xib ファイルにあるタブ バーで機能するようです。UITabBarController の下には UINavigationController があり、その下に UITableViewController のサブクラスがあり、タブ バーの対応するオプションをタップしたときに画面に表示される初期コンテンツである UITableView が含まれています。したがって、IBにこれらのものを貼り付けただけで同じことが起こらない理由がわかりません。
冒頭で述べたように、この問題は、XIB ファイル、それらのビュー コントローラー、およびそれらを呼び出すビュー コントローラーの間の関係についての根本的な誤解に起因していると確信しています。したがって、この特定の問題を解決したいのですが、この広範な誤解に対処できる回答が欲しいです。