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

mar*_*oko 2 uitabbarcontroller uinavigationcontroller ios

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

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

我基本上是在以下结尾处做到的applicationDidFinishLoading:

MainMenu *rootViewController = [[MainMenu alloc] init];
navController = [[UINavigationController alloc] initWithRootViewController:rootViewController];
self.window.rootViewController = navController;
[window makeKeyAndVisible];
return YES;
Run Code Online (Sandbox Code Playgroud)

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

tabBarController = [[UITabBarController alloc] init];
[self.navigationController pushViewController:tabBarController animated:YES];
[tabBarController release];
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

Rav*_*avi 11

你永远不应该UITabBarController从a UINavigationController.Apple明确表示:

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

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

更多信息在这里.