请帮我在root视图中隐藏导航控制器。我找到了在我需要的每个视图控制器中编写[navigationController setNavigationBarHidden:YES]
的解决方案。嗯,它的工作原理只是第一次:我运行应用程序,在root视图中我没有导航,然后我转到第二个视图 - 导航出现,好的。但是我在导航控制器中按“返回”,从根视图导航并没有消失。我使用xib。
答案 0 :(得分:21)
在rootViewController中
-(void)viewWillAppear:(BOOL)animated
{
[self.navigationController setNavigationBarHidden:YES animated:NO];
}
在第二个视图(rootViewController旁边)
-(void)viewDidLoad:(BOOL)animated
{
[self.navigationController setNavigationBarHidden:NO animated:NO];
}
答案 1 :(得分:0)
试试这个
在所有视图控制器上使用此行代码
[navigationController setNavigationBarHidden: YES animated:YES];
如果不需要动画,你可以做动画:否并在viewDidLoad中添加此代码或将其放入viewWillAppear或viewDidAppear。
在你的情况下
[navigationController setNavigationBarHidden:YES animated:NO];
你的rootViewController上的, 和
[navigationController setNavigationBarHidden:NO animated:YES];
在你的其他viewControllers上
答案 2 :(得分:0)
隐藏导航栏所有视图控制器的视图将显示方法。
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[navigationCOntroller setNavigationBarHidden:YES animated:animated];
}
答案 3 :(得分:0)
我相信你正在使用标签栏控制器。
您的代码适用于第一个视图控制器,因为您只有代码。对于第二个视图控制器,它是默认的,因此对于第二个视图控制器,您会看到导航栏。
要隐藏所有视图控制器的导航栏,请将隐藏代码放在所有视图控制器viewWillAppear
中-(void)viewWillAppear:(BOOL)animated
{
[self.navigationController setNavigationBarHidden:YES animated:NO];
}
答案 4 :(得分:0)
对于 Swift 开发人员
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)
}
}