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

时间:2011-11-21 17:01:26

标签: ios xcode uinavigationcontroller storyboard

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

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

[navController setNavigationBarHidden:YES animated:YES];

有谁知道问题是什么?

8 个答案:

答案 0 :(得分:68)

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

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

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

答案 1 :(得分:18)

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

  

1)以编程方式

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

2)使用Interface Builder

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

enter image description here

请确保您选择了包含导航控制器的场景。场景的示例图像 enter image description here

答案 2 :(得分:9)

在swift 4中:

self.navigationController!.navigationBar.isHidden = true

类似的东西:

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

答案 3 :(得分:5)

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

  

navController.navigationBar.hidden = YES;

答案 4 :(得分:2)

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

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

在离开视图之前:

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

`

答案 5 :(得分:1)

在Xamarin.iOS中

base.NavigationController.NavigationBarHidden = true;

答案 6 :(得分:0)

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

enter image description here

答案 7 :(得分:0)

更改属性后的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];