2012-07-07 89 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