在一个视图控制器上隐藏导航栏,在推送的控制器上显示它

Posted

技术标签:

【中文标题】在一个视图控制器上隐藏导航栏,在推送的控制器上显示它【英文标题】:Hide Navigation Bar on one view controller, show it on the pushed one 【发布时间】:2012-05-14 11:49:43 【问题描述】:

我进行了很多搜索,但没有找到解决问题的方法。 我的根视图控制器上有一个搜索栏。当我选择它时,我的键盘出现并且我隐藏(动画)导航栏。现在,当我按下一个单元格时,我推送了一个新的视图控制器。问题是当我显示导航栏时,它看起来不自然,它来自顶部,而推送的视图控制器来自右侧。我想做一些类似于电子邮件应用程序的事情:将推送的视图控制器和导航栏从右侧组合在一起。

谢谢。

【问题讨论】:

我不知道这是否是正确的方法,但他们可能会推送新的 NavigationController? 我试过了,但是你不能把一个导航控制器放在另一个导航控制器里面,我得到一个错误。 【参考方案1】:

您需要像这样在 ViewController A 中设置导航栏可见(隐藏导航栏):

-(void)viewWillDisappear:(BOOL)animated

    [self.navigationController setNavigationBarHidden:NO];

而在ViewController B中你需要在ViewDidLoad或ViewWillLoad中写下这段代码:

[[self navigationController] setNavigationBarHidden:YES animated:NO];

这对我有用,希望这可以帮助。

【讨论】:

以上是关于在一个视图控制器上隐藏导航栏,在推送的控制器上显示它的主要内容,如果未能解决你的问题,请参考以下文章

导航栏在第二次和后续出现时隐藏在视图控制器上

导航栏隐藏在 iPhone sdk 的弹出视图控制器上

UINavigationController 推送带有隐藏导航栏的视图控制器

隐藏标签栏控制器

在导航控制器中推送控制器时如何隐藏父标签栏

推送视图控制器时,导航栏上出现 iOS 11 黑条