0

ビュー間の基本的なナビゲーションに問題があります。2つのビューを持つtabBarControllerがあります。最初のViewControllerでは、ボタンの押下に応答するメソッドが呼び出されると、self.navigationControllerはnullになります。デバッガーはコードをステップ実行しますが、シミュレーターの画面は変更されません。viewControllerボタンの応答メソッドに次のコードがあります。

FooViewController *fvc = [[FooViewController alloc] initWithNibName:@"FooViewController" bundle:nil];
[self.navigationController pushViewController:fvc animated=YES];

MyAppDelegate.m実装のdidFinishLaunchWithOptionsメソッドで、UINavigationControllerを作成し、UIViewControllerのインスタンスをルートビューコントローラーとして次のコードで初期化します。

UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController: viewController1];
self.tabBarController = [[UITabBarController alloc] init];
self.tabBarController.viewControllers = [NSArray arrayWithObjects: viewController1, viewController2, nil];
self.window.rootViewController = self.tabBarController;

私の現在の理解では、initWithRootViewController変数はUINavigationControllerオブジェクトをviewController1にバインドする必要があります。私は何が間違っているのですか?!?どんな考え、提案、または知恵の真珠も大歓迎です。

どうもありがとう、

-ムンク

4

1 に答える 1

2

はいinitWithRootViewController、ナビゲーションをバインドしますが、タブバーで、それ自体UINavigationControllerではなく、を設定する必要がありますViewController

この行を変更します

self.tabBarController.viewControllers = [NSArray arrayWithObjects: viewController1, viewController2, nil];

self.tabBarController.viewControllers = [NSArray arrayWithObjects: nav, viewController2, nil];

また、ここにタイプミスがあるようです

[self.navigationController pushViewController:fvc animated=YES];

に変更します

[self.navigationController pushViewController:fvc animated:YES];
于 2012-06-17T14:59:23.150 に答える