2012-06-17 31 views
0

我在視圖之間的基本導航中遇到了一些麻煩。我有一個tabBarController與兩個視圖。在第一個視圖控制器中,當響應按鈕按下的方法被調用時,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。我究竟做錯了什麼?!? 任何想法,建議或珍貴的智慧將不勝感激。

非常感謝,

-Munk

回答

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]; 
+0

真棒!這工作!謝謝奧馬爾。 – munk