我正在使用故事板,当我按下某个按钮(或调用函数)时,我试图隐藏主导航控制器的顶部栏。我知道我必须从故事板(使用标识符)初始化一个引用导航控制器的对象,但是当我将setNavigationBarHidden消息发送到这个新创建的对象时,屏幕上并没有真正发生。
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UINavigationController *navController = (UINavigationController*) [storyboard instantiateViewControllerWithIdentifier:@"MyNavController"];
[navController setNavigationBarHidden:YES animated:YES];
有谁知道问题是什么?
答案 0 :(得分:68)
终于解决了。您应该始终只通过viewController隐藏导航栏。
在我上面的问题中,我实例化了一个全新的navigationController,它没有指向屏幕上真正的navController。你可以通过视图控制器获得“真实的”,如下所示:
[viewController.navigationController setNavigationBarHidden:YES animated:YES];
答案 1 :(得分:18)
有两种隐藏导航控制器顶部栏的方法:
1)以编程方式
[self.navigationController setNavigationBarHidden:YES animated:YES];
2)使用Interface Builder
您可以取消选中"显示导航栏"在导航控制器的属性列表中。
答案 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)
答案 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];