7

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

4

5 回答 5

21

在根视图控制器

-(void)viewWillAppear:(BOOL)animated
{
     [self.navigationController setNavigationBarHidden:YES animated:NO];
}

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

-(void)viewDidLoad:(BOOL)animated
 {
    [self.navigationController setNavigationBarHidden:NO animated:NO];
 }
于 2013-10-17T09:02:17.153 回答
0

试试这个

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

[navigationController setNavigationBarHidden: YES animated:YES]; 

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

在你的情况下

[navigationController setNavigationBarHidden:YES animated:NO];

在您的 rootViewController 上,以及

[navigationController setNavigationBarHidden:NO animated:YES]; 

在您的其他视图控制器上

于 2013-10-17T08:51:33.230 回答
0

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

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

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

-(void)viewWillAppear:(BOOL)animated
{
     [self.navigationController setNavigationBarHidden:YES animated:NO];
}
于 2013-10-17T09:22:53.173 回答
0

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

-(void)viewWillAppear:(BOOL)animated
{ 
 [super viewWillAppear:animated];
 [navigationCOntroller setNavigationBarHidden:YES animated:animated];
}
于 2013-10-17T08:57:33.653 回答
0

对于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)
    }
}
于 2018-08-21T13:10:42.890 回答