2012-02-24 10 views
1

In AppDelegate.mナビゲーションバーのコードを次のように記述しています。tabBarコントローラにプログラム的にnaviagationControllerを追加する方法は?

MaterialsListViewController *materials = [[MaterialsListViewController alloc]initWithNibName:@"MaterialsListView" bundle:nil]; 
    UINavigationController *navigation = [[UINavigationController alloc]initWithRootViewController:materials]; 

同じAppDelegate.mでは、タブバー用のコードを記述しています。

UIViewController *viewController1, *viewController2; 
viewController1 = [[[MaterialsListViewController alloc] initWithNibName:@"MaterialsList" bundle:nil] autorelease]; 
viewController2 = [[[RecentMaterialsListViewController alloc] initWithNibName:@"RecentMaterialsList" bundle:nil] autorelease]; 
self.tabBarController = [[[UITabBarController alloc] init] autorelease]; 
self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, nil]; 
NSArray *items = self.tabBarController.tabBar.items; 
UITabBarItem *item1 = [items objectAtIndex:0]; 
[item1 setTitle:@"Materials"]; 
UITabBarItem *item2 = [items objectAtIndex:1]; 
[item2 setTitle:@"Recent"]; 
self.window.rootViewController = self.tabBarController; 

タブバーにNavigationBarを追加するにはどうすればよいですか?

答えて

3

UINavigationControllerがありません。

あなたはviewController1

はあなたのViewControllerがありRootViewControllerとUINavigationController initのcretae後:下の行で

self.tabBarController.viewControllers = [NSArray arrayWithObjects:navigationController_01, navigationController_02, nil]; 
+0

@Fred:Hey Fredはコードを正しく見ます。私はUINAvigationCOntrollerが不足していません。そして、私はself.tabBarController.viewControllers = [NSArray arrayWithObjects:navigationController_01、navigationController_02、nil];を試しました。 – Shreedhar

+0

はい、ただし、tabControllerをtabBarControllerに追加した場合、UINavigationControllerを追加する必要があります。 あなたはそれが欠けています: 'selfArray arrayWithObjects:viewController1、viewController2、nil];' 'MaterialsListViewController'と' RecentMaterialsListViewController'を追加しています。おそらくUIViewControllersです。 – Frade

+0

'MaterialsListViewController'を最初に作成し、' MaterialsListViewController'が 'UINavigationController'を初期化し、' UINavigationController'を ' tabBarController' viewControllers配列、 'MaterialsListViewController'ではありません.. それを取得する?? – Frade

1

、次のことができます。

UINavigationController *navigationController_01 = [[UINavigationController alloc] initWithRootViewController:(UIViewController *)]; 

が続い navigationController_01 tabBarController.viewControllersに入れます配列のメンバーとして navigationcontrollerを渡します。

self.tabBarController.viewControllers = [NSArray arrayWithObjects: navigation, viewController2, nil]; 
関連する問題