如何在根视图中隐藏导航控制器?
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)
【讨论】:
以上是关于如何在根视图中隐藏导航控制器?的主要内容,如果未能解决你的问题,请参考以下文章