我的应用程序结构如下:UITabBarController> UINavigationController> ViewControllerOne> ViewControllerTwo。 UINavigationBar底部是标签栏,现在当用户导航到第二个视图控制器时,我希望能够隐藏标签栏并用工具栏替换。我试过这段代码:
[self.navigationController.tabBarController.tabBar setHidden:YES];
[self.navigationController.toolbar setHidden:NO];
当我运行应用程序时,标签栏被隐藏但工具栏不会出现。另外,由于最后一个VC是一个表视图控制器,当我滚动单元格时,表格和视图底部之间有一个白色间隙。我怎么能解决这个问题?
答案 0 :(得分:10)
这是行不通的,因为当您隐藏标签栏时,子视图将无法正确调整(这就是您获得空白区域的原因)。你必须使用
self.hidesBottomBarWhenPushed = YES;
在你的init方法或awakeFromNib中......然后是
[self.navigationController setToolbarHidden:NO animated:YES];
例如在viewDidLoad中。
这样,当隐藏标签栏时,标签栏控制器的视图将正确布局它的子视图。只记得调用self.hidesBottomBarWhenPushed = NO;在第一个视图控制器中,当从导航堆栈弹出第二个视图控制器时,标签栏仍然会被隐藏。
答案 1 :(得分:0)
尝试使用适当的框架分配工具栏并将其添加到self.tabBarController.view