Ios 在工具栏/选项卡栏之间交替

Ios 在工具栏/选项卡栏之间交替,ios,uitabbar,uitoolbar,Ios,Uitabbar,Uitoolbar,我的应用程序的结构如下:UITabBarController>UINavigationController>ViewControllerOne>ViewControllerTwo。 UINavigationBar的底部有一个选项卡栏,现在当用户导航到第二个视图控制器时,我希望能够隐藏选项卡栏并用工具栏替换is。我尝试了以下代码: [self.navigationController.tabBarController.tabBar setHidden:YES]; [self.navigationC

我的应用程序的结构如下:UITabBarController>UINavigationController>ViewControllerOne>ViewControllerTwo。 UINavigationBar的底部有一个选项卡栏,现在当用户导航到第二个视图控制器时,我希望能够隐藏选项卡栏并用工具栏替换is。我尝试了以下代码:

[self.navigationController.tabBarController.tabBar setHidden:YES];
[self.navigationController.toolbar setHidden:NO];

当我运行应用程序时,选项卡栏被隐藏,但工具栏不显示。另外,由于最后一个VC是表视图控制器,当我滚动单元格时,表和视图底部之间有一个白色的间隙。我怎样才能解决这个问题

尝试为工具栏指定适当的框架,并将其添加到self.tabBarController.view

,这将不起作用,因为当您像这样隐藏选项卡栏时,子视图将无法正确调整(这就是为什么会出现空白)。你必须使用

self.hidesBottomBarWhenPushed = YES;
在您的init方法或awakeFromNib中。。。然后

[self.navigationController setToolbarHidden:NO animated:YES];
例如,在viewDidLoad中


这样,当您隐藏选项卡栏时,选项卡栏控制器的视图将正确布局其子视图。只要记住在pushed=NO时调用self.hidesbottombar;在第一个视图控制器中,否则,当从导航堆栈中弹出第二个视图控制器时,选项卡栏仍将隐藏。

此方法在哪里调用?是不是看起来像:?如果没有,试着把它移到那里。@Greg我没有把它放在那里,我试过了,但没用。我从第二个视图控制器上的检查器启用了工具栏,并添加了一个项目(还将其连接到我的类)。但它不起作用。没有显示任何内容,仍然存在白色的差距。谢谢您的输入。@Greg好的,在“模拟度量”下的inspector中,我选中了“显示工具栏”,现在它正在显示,但是选项卡栏和工具栏都在上面。我会想办法解决的。谢谢你的意见!它确实有用!但是,我将其放置在源视图控制器中,而不是目标视图控制器中。我把它放在备忘箱里了。格:不是放在初始化箱里。谢谢!这对我的项目很有帮助。我不知道在第一个VC还是第二个VC中调用HidesBottomBar。最后为第二个VC打电话给awakeFromNib,效果很好。(添加到ViewDidLoad时不起作用)