我的应用程序使用tabbarcontroller作为窗口的根视图,其中单击每个选项卡项加载splitviewcontroller及其所需的视图。拆分视图的左窗格和右窗格是导航控制器。现在,在tableview中的任何按钮操作或didselectrow中,将在右窗格中加载相应的视图。我成功加载了右窗格中的视图,但是当拆分视图的右窗格中加载了新的视图控制器时,无法显示barbuttonitem。
tabbarcontroller
- > splitviewcontroller
-----> Leftpane:导航控制器
--------------->查看控制器
----->右键:导航控制器
--------------->查看控制器
标签栏的每个Splitview都会像'iPad Mail app'。
为了使应用程序更加生动,我采用了类rootiPadViewController,它具有uisplitviewcontroller和uipopovercontroller的委托,可以在slpitview中加载所有视图。
分割视图的右窗格中加载的viewcontroller,如下所示。
UISplitViewController *splitViewController = (UISplitViewController*)[appDelegate.tabBarController.viewControllers objectAtIndex:tabIndex];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController];
//[navController pushViewController:viewController animated:YES];
NSMutableArray *array = [[NSMutableArray alloc] init];
[array addObject:[splitViewController.viewControllers objectAtIndex:0]];
[array addObject:navController];
splitViewController.viewControllers = array;
[array release];
请建议我在splitviewcontroller中更改视图时为什么不显示栏按钮项目。
App看起来如下
答案 0 :(得分:0)
我可能错了,但据我所知,只有当您处于纵向模式时,条形按钮项才会出现,因为:
如果有帮助,请告诉我。
答案 1 :(得分:0)
对于导航控制器,每个视图都应该定义它们的左右栏按钮项,如果没有定义,那么标签栏将为空。你将获得免费的唯一barbutton项目是当你在navigationController的rootViewController上方推一个新的View Controller时出现的后面的barbutton项目
你必须在NavigationControoler中的每个viewController的ViewDidLoad方法中分配它们,并将它们设置为你的parentViewController的左右barbutton项(即navigationController)
答案 2 :(得分:0)
请检查此示例项目https://github.com/alexth/TBSV
这是关于如何在UITabBar中使用UISplitViewController。
所有逻辑都在Appdelegate的-loadSplitToTab
中完全继承所有控制器,在其他每种情况下,UISplitViewController都需要是一个根(如Apple文档中所述),你将无法在UITabBar中使用UISplitViewController。