我有一个在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会推动标签控制器,但只显示第一个标签。这是一张照片。
答案 0 :(得分:11)
您永远不应该从UITabBarController
推送UINavigationController
。 Apple清楚地说明了这一点:
使用标签栏控制器的应用也可以在一个或多个标签中使用导航控制器。在同一用户界面中组合这两种类型的视图控制器时,标签栏控制器始终充当导航控制器的包装。
这实际上意味着标签栏应该是被调用的所有其他视图控制器的父级。不是相反。您应该更改呈现应用的方式。
更多信息here。