故事板 - 以编程方式隐藏导航控制器的顶部栏
我正在使用故事板,并且当某个按钮被按下(或称为函数)时,我试图隐藏我的主导航控制器的顶部栏。我知道我必须从故事板(使用标识符)初始化一个引用导航控制器的对象,但是当我将setNavigationBarHidden消息发送给这个新创建的对象时,屏幕上并没有真正发生。故事板 - 以编程方式隐藏导航控制器的顶部栏
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UINavigationController *navController = (UINavigationController*) [storyboard instantiateViewControllerWithIdentifier:@"MyNavController"];
[navController setNavigationBarHidden:YES animated:YES];
有谁知道是什么问题?
终于解决了。您应该始终只通过viewController隐藏导航栏。
在我上面的问题中,我实例化了一个全新的导航控制器,它并没有指向屏幕上真正的navController。你可以得到“真正的”一通这样的视图控制器:
[viewController.navigationController setNavigationBarHidden:YES animated:YES];
Swift:'self.navigationController?.setNavigationBarHidden(true,animated:false)' –
我面临同样的问题,这个工作对我来说
navController.navigationBar.hidden = YES;
:
self.navigationController!.navigationBar.hidden = true
是这样的:更改属性后
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController!.navigationBar.hidden = true
}
对于Swift 4,该属性被命名为isHidden – Gerriet
SetRoot RootViewController的。
UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
// Create Navigation controller with RootViewController
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:[storyBoard instantiateViewControllerWithIdentifier:@"MyRootViewController"]];
在任何视图控制器
[self.navigationController setNavigationBarHidden:YES animated:YES];
设置RootViewController的
[appDelegate.window setRootViewController: navController];
,否则你可以做Xamarin.iOS
base.NavigationController.NavigationBarHidden = true;
的答案是正确的。只是想补充一点,您可能希望在离开视图时放回导航栏,因为其他视图可能会使用它,并且当您隐藏所有视图时都会隐藏导航栏。
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.navigationBar.isHidden = true
}
,你离开之前的观点:
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.navigationController?.navigationBar.isHidden = false
}
`
您已确认'navController'不等于'nil'? –
是的,试过了,它不是零...奇怪的是,我甚至无法设置此导航控制器的标题,或以任何其他方式与其交互。我真的不知道问题出在哪里......:/ –