【问题标题】:How to hide Navigation Controller in Root View?如何在根视图中隐藏导航控制器?
【发布时间】:2013-10-25 15:53:34
【问题描述】:
请帮我在根视图中隐藏导航控制器。我找到了在我需要的每个视图控制器中编写[navigationController setNavigationBarHidden:YES] 的解决方案。好吧,它只是第一次工作:我运行应用程序,在根视图中我没有导航,然后我转到第二个视图 - 出现导航,好的。但是然后我在导航控制器中按“返回”,从根视图导航并没有消失。我与xib一起工作。
【问题讨论】:
标签:
ios
objective-c
uinavigationcontroller
navigation
xcode5
【解决方案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)
}
}