2014-09-25 68 views
0

我的应用程序在开始时隐藏导航栏。UINavigationbar将在UISearchbar结束搜索后显示,我如何隐藏导航栏

但在视图(全屏)中,有一个搜索栏。

当我开始搜索时,搜索栏停留在视图的顶部。

然后我取消搜索,更改搜索栏的框架,导航栏出现。

为什么会发生这种情况?我怎样才能隐藏导航栏?

我尝试这样做:

我在searchDisplayControllerWillEndSearch添加一些日志和searchDisplayControllerDidEndSearch显示navigtaionbar状态。

在searchDisplayControllerDidEndSearch,navigationController.navigationBarHidden是YES,

在searchDisplayControllerDidEndSearch,navigationController.navigationBarHidden是NO。

然后我searchDisplayControllerDidEndSearch设置navigationController.navigationBarHidden to YES,导航栏将显示却隐藏着在很短的时间,和导航栏将不再显示。(navigationController.navigationBarHidden将永远是YES)

任何想法?

谢谢!

回答

-1
  • 您可以使用下面的代码在你的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]; }

+0

可我知道为什么downvote? – 2014-09-25 07:30:29

+0

你永远不应该使用navigationController.navigationBar.hidden - 使用navigationController.navigationBarHidden – Simon 2014-09-25 07:53:04

+0

首先,谢谢你的回答。如果我使用navigationController.navigationBar.hidden,并且设置为YES,那么顶部会有一个黑色空间,好像是导航栏仍然使用这个空间。 – Cotin 2014-09-25 09:18:42

0

写继viewDidLoad方法的代码。

self.navigationController.navigationBarHidden =YES 

其他明智

self.navigationController.navigationBar.hidden =YES; 
+0

我在searchDisplayControllerDidEndSearch中设置了self.navigationController.navigationBar.hidden为YES,但它起作用。但是第一次,导航栏会先显示,然后立即隐藏,显得太怪异。是否有任何方法隐藏导航栏和用户赢得'没有看到它。 – Cotin 2014-09-25 05:19:37