如何使用故事板隐藏UINavigationController的工具栏?

时间:2012-08-07 06:46:05

标签: ios uinavigationcontroller uistoryboard

我有一个故事板iOS应用程序,我有很多观点。我有一个UINavigationController,选中了“显示工具栏”选项,然后填充整个视图层次结构。

假设我的视图流是3个视图,A,B和C:

View A --(push)--> View B --(push)--> View C

View A是一个普通的视图控制器,工具栏上有一个用于推动视图B的按钮。 视图B是一个表控制器,所以我想在这里隐藏工具栏。 视图C是另一个视图,如视图A,需要显示工具栏。

在Xcode / Storyboard中,如果在View BI中选择“隐藏推送时的底部栏”,它就会这样做 - 底部栏对于视图B是隐藏的。同样,如果我为“底栏”选择“无”选择选项,View B.没有任何标准。好。

这是我的问题:无论我做什么,使用视图B的任一选项,我的工具栏都不会返回到视图C.如果我将View C的工具栏设置为推断(并且取消选中隐藏推送)它不会显示,也不是我手动将其设置为“工具栏”。

有什么想法吗?

2 个答案:

答案 0 :(得分:16)

正如@Zoltán所说,Storyboard没有提供完整的答案。

在viewDidLoad或viewWillAppear上设置self.navigationController.toolbarHidden = YES / NO是有效的,但很丑(在视图过渡动画期间,黑色矩形代替工具栏)。

这是我为View B控制器(以及View C的反转)所做的,以模仿故事板中“hide on push”选项的动画平滑度:

- (void)viewWillAppear:(BOOL)animated
{
    [self.navigationController setToolbarHidden:YES animated:YES];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [self.navigationController setToolbarHidden:NO animated:YES];
}

答案 1 :(得分:2)

我认为你不能完全在故事板中做到这一点。但是,您可以将其设置为始终显示,将按钮放在您想要显示的每个视图上,然后您可以调用 self.navigationController.toolbarHidden = YES;加载视图控件时,您不希望工具栏出现。 之后如果出现另一个VC,你想要工具栏,只需将toolbarHidden设置为NO。