UINavigationController推送UITabBarController只显示一个选项卡

时间:2012-01-19 16:19:05

标签: ios uinavigationcontroller uitabbarcontroller

我有一个在IB中创建UITabBarController的应用程序。那个tbc加载了3个到目前为止工作正常的视图。

我决定将UINavController作为起始VC插入,并在单元格中显示UITableViewController个4个菜单项。 4个项目中的每一个实质上都会将UITabBarController put pass加载到不同的xml文件中进行处理,以便在这3个选项卡中显示数据。

我基本上是在applicationDidFinishLoading

的末尾做到了这一点
MainMenu *rootViewController = [[MainMenu alloc] init];
navController = [[UINavigationController alloc] initWithRootViewController:rootViewController];
self.window.rootViewController = navController;
[window makeKeyAndVisible];
return YES;

然后我创建了MainMenu作为rootViewController子类UITableViewController并添加了一个硬编码数组,它显示了我想要的4个项目。我有didSelectRowAtIndexPath运行此代码:

tabBarController = [[UITabBarController alloc] init];
[self.navigationController pushViewController:tabBarController animated:YES];
[tabBarController release];

事实证明,当我运行它时,navcontroller会推动标签控制器,但只显示第一个标签。这是一张照片。

enter image description here

1 个答案:

答案 0 :(得分:11)

您永远不应该从UITabBarController推送UINavigationController。 Apple清楚地说明了这一点:

使用标签栏控制器的应用也可以在一个或多个标签中使用导航控制器。在同一用户界面中组合这两种类型的视图控制器时,标签栏控制器始终充当导航控制器的包装。

这实际上意味着标签栏应该是被调用的所有其他视图控制器的父级。不是相反。您应该更改呈现应用的方式。

更多信息here