故事板 – 以编程方式隐藏导航控制器的顶部栏

我正在使用故事板,当我按下某个按钮(或调用函数)时,我试图隐藏主导航控制器的顶部栏。 我知道我必须从故事板(使用标识符)初始化一个引用导航控制器的对象,但是当我将setNavigationBarHidden消息发送到这个新创建的对象时,屏幕上并没有真正发生。

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; UINavigationController *navController = (UINavigationController*) [storyboard instantiateViewControllerWithIdentifier:@"MyNavController"]; [navController setNavigationBarHidden:YES animated:YES]; 

有谁知道问题是什么?

终于解决了。 您应该始终只通过viewController隐藏导航栏。

在我上面的问题中,我实例化了一个全新的navigationController,它没有指向屏幕上真正的navController。 您可以通过视图控制器获取“真实”的一个,如下所示:

 [viewController.navigationController setNavigationBarHidden:YES animated:YES]; 

隐藏导航控制器顶部栏有两种方法:

1)以编程方式

 [self.navigationController setNavigationBarHidden:YES animated:YES]; 

2)使用Interface Builder

您可以在导航控制器的属性列表中取消选中“显示导航栏”。

在此处输入图像描述

请确保您选择了包含导航控制器的场景。 场景的示例图像。
在此处输入图像描述

在快速4:

 self.navigationController!.navigationBar.isHidden = true 

像这样的东西:

 override func viewDidLoad() { super.viewDidLoad() self.navigationController!.navigationBar.isHidden = true } 

我遇到了同样的问题,这对我有用

navController.navigationBar.hidden = YES;

答案是对的。 只是想补充一点,你可能想要在离开视图时放回导航栏,因为其他视图可能会使用它,当你隐藏一个隐藏所有视图时。

 override func viewDidLoad() { super.viewDidLoad() self.navigationController?.navigationBar.isHidden = true } 

在你离开视图之前:

 override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) self.navigationController?.navigationBar.isHidden = false } 

`

在Xamarin.iOS

 base.NavigationController.NavigationBarHidden = true; 

我通过在属性检查器中取消选中栏可见性“显示导航栏”来隐藏我的导航栏。希望这可以帮助某人。

在此处输入图像描述

更改属性后的SetRoot RootViewController。

  UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; // Create Navigation controller with RootViewController UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:[storyBoard instantiateViewControllerWithIdentifier:@"MyRootViewController"]]; 

设置RootViewController

  [appDelegate.window setRootViewController: navController]; 

或者你可以在任何ViewController中做

 [self.navigationController setNavigationBarHidden:YES animated:YES];