隐藏底部导航栏控制器

7
我想在我的应用程序某个屏幕上隐藏底部工具栏,IB似乎有一个选项可以预览为正常工作,但是当我构建和测试应用程序时,底部工具栏仍然存在。 我知道我可以使用[self.navigationController setToolbarHidden:YES];来实现,但是我的问题不是如何使用代码,而是如何通过界面生成器使其起作用。
下面是截图,右侧我已经选择了“ Bottom Bar: None” - 这会像左侧预览一样删除底部栏。 如果我将其设置为inferred(而不是None),则底部栏将在IB预览中显示。 如何使其正常工作?
3个回答

5

您无法在Interface Builder中设置此项。如果您注意到IB中的部分标题,您可以在其中打开/关闭这些不同的栏,它会显示“模拟”。这些选项仅用于帮助您在设计时在IB中可视化UI。它们对运行中的应用程序没有任何影响。


2
是的,那就是你应该做的。 - Ole Begemann
1
还要注意,如果涉及的ViewController被推入导航栈中,有一个名为“在推送时隐藏底部栏”的选项可以实现您所要求的功能。 - Till
@James,我的建议确实会使隐藏过程有动画效果。 - Till
直到我发现了一个问题:当我被推回到那个有工具栏的初始视图控制器时,当我回到它时,它没有工具栏。 - Baub
@OleBegemann所说的不正确。这不是模拟的。它在XCode版本4.6.3中完美运行。 - enagra
显示剩余3条评论

4

如果你只想在一个视图控制器中隐藏工具栏,那么无法在故事板中实现。如果你想要对所有视图控制器隐藏工具栏,那么需要进入导航控制器并在故事板中进行设置。但这会使得所有的视图控制器都隐藏工具栏。如果你只想在一个视图控制器中隐藏它,可以在该视图控制器中使用以下代码:

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

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

3

如果您的ViewController被推到UINavigationController堆栈中,请在IB中启用“Hides Bottom Bar on Push”。

这应该正好做到您所要求的。作为奖励,系统会很好地动画隐藏和显示底部栏。


3
我认为这有问题:当我被推回到初始视图控制器时,它本来有工具栏,但当我返回时,它没有了工具栏。请问我该怎么解决? - Baub
@James 这个问题可以通过设置 UINavigationControllerShows Toolbar 选项来解决。 - Rudolf Adamkovič

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接