2012-07-07 76 views
0

我不確定這是如何工作的。我有一個UITabBarController,我的第一個選項卡是UiNavigationController,它的rootViewController有一個UISearchDisplayController和UISearchBar。我將rootViewController設置爲UINavigationControllerDelegate。UINavigationBar搜索後取消隱藏

我這樣做:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { 
    [self.navigationController.navigationBar setHidden:YES]; 
} 

所以我的導航欄將不會顯示。該部分起作用。當我進行搜索並按下回車鍵後,導航欄就會進入,並將我的搜索欄下推。這裏發生了什麼?有什麼地方需要阻止導航欄顯示嗎?

我知道我可以用模態表示我的視圖控制器,因爲這是我以前做的。但除navBar問題外,沒有理由將其以模態方式呈現。一旦搜索完成並且用戶選擇了一些內容進入更詳細的項目視圖,我就會在那裏創建一個navigationController。看起來如果我在根上只有一個UINavigationController會更好,因爲就像我說的那樣,沒有理由以模態方式顯示詳細列表。謝謝!

回答

0

嘗試

[self.navigationController setNavigationBarHidden:YES animated:NO]; 
+0

這工作更換

[self.navigationController.navigationBar setHidden:YES]; 

。它爲什麼有效?我很難看出差異。 – Crystal 2012-07-07 17:20:32

+0

導航控制器負責其導航欄。在第一種情況下,你自己隱藏它,但控制器不知道這些,所以稍後可能會取消隱藏。但在第二種情況下,您告訴控制器您希望將其隱藏起來,因此它隱藏並隱藏它。 – Simon 2012-07-13 09:07:25