如何在根视图中隐藏导航控制器?

Posted

技术标签:

【中文标题】如何在根视图中隐藏导航控制器?【英文标题】:How to hide Navigation Controller in Root View? 【发布时间】:2013-10-25 15:53:34 【问题描述】:

请帮我在根视图中隐藏导航控制器。我找到了在我需要的每个视图控制器中编写[navigationController setNavigationBarHidden:YES] 的解决方案。好吧,它只是第一次工作:我运行应用程序,在根视图中我没有导航,然后我转到第二个视图 - 出现导航,好的。但是然后我在导航控制器中按“返回”,从根视图导航并没有消失。我与xib一起工作。

【问题讨论】:

【参考方案1】:

在根视图控制器中

-(void)viewWillAppear:(BOOL)animated

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

在第二个视图中(在 rootViewController 旁边)

-(void)viewDidLoad:(BOOL)animated
 
    [self.navigationController setNavigationBarHidden:NO animated:NO];
 

【讨论】:

【参考方案2】:

试试这个

在所有视图控制器上使用这行代码

[navigationController setNavigationBarHidden: YES animated:YES]; 

如果不需要动画,您可以执行动画:NO 并将此代码添加到 viewDidLoad 或放入 viewWillAppear 或 viewDidAppear。

你的情况

[navigationController setNavigationBarHidden:YES animated:NO];

在你的 rootViewController 上, 和

[navigationController setNavigationBarHidden:NO animated:YES]; 

在您的其他视图控制器上

【讨论】:

【参考方案3】:

隐藏导航栏所有视图控制器的视图将出现的方法。

-(void)viewWillAppear:(BOOL)animated
 
 [super viewWillAppear:animated];
 [navigationCOntroller setNavigationBarHidden:YES animated:animated];

【讨论】:

【参考方案4】:

我相信你正在使用标签栏控制器。

您的代码适用于第一个视图控制器,因为您只有那里的代码。对于第二个视图控制器,它是默认设置,因此对于第二个视图控制器,您会看到导航栏。

要隐藏所有视图控制器的导航栏,请将隐藏代码放入所有视图控制器 viewWillAppear

-(void)viewWillAppear:(BOOL)animated

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

【讨论】:

看来你写这篇文章的时间最长 :)【参考方案5】:

对于 Swift 开发人员

斯威夫特 4.2

RootViewController.swift

class RootViewController: UIViewController 
    override func viewDidLoad() 
        super.viewDidLoad()
    

    override func viewWillAppear(_ animated: Bool) 
        self.navigationController?.setNavigationBarHidden(true, animated: false)
    

NextViewController.swift

class NextViewController: UIViewController 
    override func viewDidLoad() 
        super.viewDidLoad()
        self.navigationController?.setNavigationBarHidden(false, animated: false)
    

【讨论】:

以上是关于如何在根视图中隐藏导航控制器?的主要内容,如果未能解决你的问题,请参考以下文章

导航栏上的 iOS::Button 仅出现在根视图控制器上

搜索显示控制器如何隐藏导航栏?

如何快速隐藏嵌入在导航堆栈中的视图控制器中的选项卡栏?

在容器视图中具有静态表的导航控制器

使用隐藏的导航栏刷新控件

在没有导航控制器的情况下滑动 Web 视图时如何隐藏工具栏?