【问题标题】:UINavigationbar will show after UISearchbar end search,how can i hide the navigationbarUINavigationbar 将在 UISearchbar 结束搜索后显示,我如何隐藏导航栏
【发布时间】:2014-09-25 03:10:57
【问题描述】:

我的应用在开头隐藏了导航栏。

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

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

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

为什么会这样?如何隐藏导航栏?

我试过了:

我在 searchDisplayControllerWillEndSearch 和 searchDisplayControllerDidEndSearch 中添加了一些日志以显示导航栏状态。

在searchDisplayControllerDidEndSearch中,navigationController.navigationBarHidden为YES,

在 searchDisplayControllerDidEndSearch 中,navigationController.navigationBarHidden 为 NO。

然后我在searchDisplayControllerDidEndSearch中设置navigationController.navigationBarHidden to YES,导航栏会显示但会在短时间内隐藏,导航栏将不再显示。(navigationController.navigationBarHidden永远是YES)

有什么想法吗?

谢谢!

【问题讨论】:

    标签: ios objective-c uinavigationbar uisearchbar


    【解决方案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 好的,谢谢你的信息,我也修改了我的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多