当uisplitviewcontroller的视图发生更改时,不会显示BarButtonItem

时间:2013-05-02 06:55:23

标签: iphone ios uisplitviewcontroller uitabbaritem

我的应用程序使用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看起来如下enter image description here

enter image description here

3 个答案:

答案 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。