UINavigationbar 将在 UISearchbar 结束搜索后显示,我如何隐藏导航栏
Posted
技术标签:
【中文标题】UINavigationbar 将在 UISearchbar 结束搜索后显示,我如何隐藏导航栏【英文标题】:UINavigationbar will show after UISearchbar end search,how can i hide the navigationbar 【发布时间】:2014-09-25 03:10:57 【问题描述】:我的应用在开头隐藏了导航栏。
但在视图(全屏)中,有一个搜索栏。
当我开始搜索时,搜索栏停留在视图的顶部。
然后我取消搜索,改变搜索栏的框架,出现导航栏。
为什么会这样?如何隐藏导航栏?
我试过了:
我在 searchDisplayControllerWillEndSearch 和 searchDisplayControllerDidEndSearch
中添加了一些日志以显示导航栏状态。
在searchDisplayControllerDidEndSearch中,navigationController.navigationBarHidden为YES,
在 searchDisplayControllerDidEndSearch 中,navigationController.navigationBarHidden 为 NO。
然后我在searchDisplayControllerDidEndSearch
中设置navigationController.navigationBarHidden to YES
,导航栏会显示但会在短时间内隐藏,导航栏将不再显示。(navigationController.navigationBarHidden
永远是YES)
有什么想法吗?
谢谢!
【问题讨论】:
【参考方案1】:在 ViewDidLoad 方法中编写以下代码。
self.navigationController.navigationBarHidden =YES
其他智慧
self.navigationController.navigationBar.hidden =YES;
【讨论】:
我在searchDisplayControllerDidEndSearch中将self.navigationController.navigationBar.hidden设置为YES,就可以了。但是第一次导航栏会先显示,然后马上隐藏,太诡异了。有什么办法隐藏导航栏,用户不会看到它。【参考方案2】:我已经在这里找到了类似的问题:UISearchBar with hidden UINavigationBar
以及解决方案:IPHONE: ABPeoplePickerNavigationController hidden navigation bar
【讨论】:
【参考方案3】:您可以在viewDidLoad
中使用以下代码隐藏导航栏Self.navigationController.navigationBar.hidden = YES;
如果您正在展示导航控制器,那么您可以在展示之前隐藏您的导航栏,使用此代码yournavigation.navigaionBar.hidden = YES;
我们可以使用任一代码隐藏导航栏self.navigationController.navigationBarHidden = YES;
或
Self.navigationController.navigationBar.hidden = YES;
最后一个它可能会解决您的问题隐藏viewWillAppear
中的导航栏。这里我添加代码
- (void)viewWillAppear:(BOOL)animated
self.navigationController.navigationBar.hidden = YES;
[super viewWillAppear:animated];
【讨论】:
你不应该使用 navigationController.navigationBar.hidden - 使用 navigationController.navigationBarHidden 首先,感谢您的回答。如果我使用navigationController.navigationBar.hidden,并设置为YES,顶部会有一个黑色空间,似乎导航栏仍然使用这个空间。 @Simon 嗨西蒙,但刚才我检查了两个代码都工作正常,是否有任何理由不使用 navigationController.navigationBar.hidden ,你能解释一下吗? UINavigationController 控制导航栏。如果您使用 navigationController.navigationBar.hidden,那么稍后导航控制器将显示或隐藏它以匹配它想要的内容;而如果你使用 navigationController.navigationBarHidden 那么控制器会根据你的需要显示或隐藏它。 @simon 好的,谢谢你的信息,我也修改了我的答案。以上是关于UINavigationbar 将在 UISearchbar 结束搜索后显示,我如何隐藏导航栏的主要内容,如果未能解决你的问题,请参考以下文章
创建此自定义 UINavigationbar ios 的最佳方法
UINavigationBar titleview 图像未与 UINavigationBar 对齐
由于奇怪的 UINavigationBar 视图层次结构,自定义 UINavigationBar 不起作用