如何在Root View中隐藏导航控制器?

时间:2013-10-17 08:43:34

标签: ios objective-c uinavigationcontroller navigation xcode5

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

5 个答案:

答案 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)
    }
}