2014-11-04 80 views
0

我使用的是故事板,我引用了故事板,并使用Storyboard ID获取了一个值。UIToolbar和UINavigationBar不隐藏在setHidden上:是

Storyboard document outline

NavigationController Storyboard ID

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
UINavigationController *navigationController = (UINavigationController *)[mainStoryboard instantiateViewControllerWithIdentifier:@"NavigationController"]; 

这是UIViewController-viewDidLoad:方法是目前在UINavigationController层次的根内完成。

NavigationController inspector view

在我选择以示故事板都与UINavigationController相关的UINavigationBarUIToolbar。然后我将它们设置为隐藏在我的代码中:

UINavigationBar *navigationBar = navigationController.navigationBar; 
[navigationBar setHidden:YES]; 
UIToolbar *toolbar = navigationController.toolbar; 
[toolbar setHidden:YES]; 

但它们仍然可见!为什么他们仍然可见?单步执行代码告诉我这些变量有一个非零值。此外,如果它们为零,我显然会遇到运行时错误。

我也曾尝试在UINavigationController方法:

[navigationController setNavigationBarHidden:YES]; 
[navigationController setToolbarHidden:YES]; 

这些都不能工作。

我想说明的是,该程序不会崩溃。它只是没有警告地滑过这些方法。检查这些“条”的状态表明它们实际上是隐藏的(在UINavigationController实例上使用isNavigationBarHiddenisToolbarHidden),但这在模拟器中并不明显。

回答

0

编辑:

问题实例化的navigationController并通过嵌入导航控制器属性访问它的将其分配到一个局部变量,而不是一个UIViewController

问题解决

+0

我里面用尽全力'-viewDidLoad:'和'-viewWillAppear:' – 2014-11-04 03:52:47

+0

抱歉误读了那部分,那么你是否在'viewController -viewDidLoad:'内部实例化了'navigationController'并设置了'viewController navigationController'? 因为如果是这样,'self.navigationController'是一个只读var 您需要将'navigationController'的'rootViewController'设置为您想要的'viewController' – 2014-11-04 04:09:22

+0

如果这是问题,我将编辑我的答案 – 2014-11-04 04:12:53