2014-11-04 84 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