Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 当uisplitviewcontroller的视图更改时,不显示BarButtonItem_Iphone_Ios_Uisplitviewcontroller_Uitabbaritem - Fatal编程技术网

Iphone 当uisplitviewcontroller的视图更改时,不显示BarButtonItem

Iphone 当uisplitviewcontroller的视图更改时,不显示BarButtonItem,iphone,ios,uisplitviewcontroller,uitabbaritem,Iphone,Ios,Uisplitviewcontroller,Uitabbaritem,我的应用程序使用tabbarcontroller作为窗口的根视图,单击每个选项卡项即可为splitviewcontroller加载所需的视图。拆分视图的左窗格和右窗格是导航控制器。现在,在tableview中的任何按钮操作或didselectrow上,相应的视图将加载到右窗格中。我成功地在右窗格中加载视图,但在拆分视图的右窗格中加载新视图控制器时,无法显示BarButtonim 塔巴控制器 -->splitviewcontroller ----->左窗格:导航控制器 --------------

我的应用程序使用tabbarcontroller作为窗口的根视图,单击每个选项卡项即可为splitviewcontroller加载所需的视图。拆分视图的左窗格和右窗格是导航控制器。现在,在tableview中的任何按钮操作或didselectrow上,相应的视图将加载到右窗格中。我成功地在右窗格中加载视图,但在拆分视图的右窗格中加载新视图控制器时,无法显示BarButtonim

塔巴控制器

-->splitviewcontroller

----->左窗格:导航控制器

--------------->视图控制器

----->右窗格:导航控制器

--------------->视图控制器

选项卡栏的每个拆分视图都将类似于“iPad邮件应用程序”

为了使应用程序通用化,我使用了RootiPadViewController类,它有uisplitviewcontroller和uipopovercontroller的委托,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中更改视图时不显示栏按钮项

应用程序如下所示


我可能错了,但据我所知,仅当您处于纵向模式时,条形按钮项才会出现,因为:

  • 拆分视图控制器有两个控制器(主视图控制器和局部视图控制器)
  • 当您处于横向模式时,两个视图控制器都会显示在屏幕上
  • 当您处于纵向模式时,仅显示局部视图控制器,因此显示条形按钮项
  • 条形按钮项的目标是让您在纵向模式下打开主视图控制器

请让我知道这是否对您有帮助。

对于导航控制器,每个视图都应定义其左右栏按钮项,如果未定义任何内容,则选项卡栏将为空。您将获得的唯一免费barbutton项是back barbutton项,当您将新视图控制器推到navigationController的rootViewController上方时,该项出现


您必须在navigationController中每个viewController的ViewDidLoad方法中分配它们,并将它们设置为parentViewController(即navigationController)的右和左按钮项。

请检查此示例项目

它是关于如何在UITabBar中使用UISplitViewController的。
所有逻辑都在Appdelegate的
-loadSplitToTab
中,只是全部继承了所有控制器,在其他情况下,UISplitViewController需要是根(如Apple文档中所述)您将无法在UITabBar中使用UISplitViewController。

我的意思是说barbuttonitem不以纵向模式显示。我添加了self.navigationItem.leftBarButtonItem=barbuttonitem的引用;如果视图处于纵向模式,其中barbuttonitem是通过spliviewcontroller“willHideViewController…”委托方法获取的