UISearchController 搜索栏不隐藏导航栏

Posted

技术标签:

【中文标题】UISearchController 搜索栏不隐藏导航栏【英文标题】:UISearchController search bar does not hide navigation bar 【发布时间】:2015-08-19 06:49:34 【问题描述】:

我有一个UITableViewController 作为我的UINavigationController 的根。激活搜索栏不会隐藏导航栏。我尝试了很多不同的配置,但似乎没有一个可以工作。

class TableViewController < UITableViewController
  def viewDidLoad
    search_controller = UISearchController.alloc.initWithSearchResultsController(nil)
    search_controller.searchResultsUpdater = self
    search_controller.searchBar.delegate = self
    search_controller.searchBar.sizeToFit
    self.definesPresentationContext = true

    self.tableView.tableHeaderView = search_controller.searchBar
  end
end

这是我的屏幕激活后的样子。

为什么这没有按预期工作?

编辑:视图也没有变暗

【问题讨论】:

【参考方案1】:

我终于明白了。 UISearchController 需要分配给类变量,以便编译器不会释放它。

@search_controller = UISearchController.alloc
    .initWithSearchResultsController(nil)
@search_controller.searchBar.sizeToFit
@search_controller.searchBar.delegate = self

table_header_view @search_controller.searchBar

希望这对将来的某人有所帮助,这样他们就不必浪费时间去想为什么它不起作用。

【讨论】:

【参考方案2】:

你可能需要这条线,我想这会解决你的问题:

search_controller. hidesNavigationBarDuringPresentation = true

【讨论】:

以上是关于UISearchController 搜索栏不隐藏导航栏的主要内容,如果未能解决你的问题,请参考以下文章

UISearchController:即使搜索栏为空也显示结果

使用ios 8 UISearchController单击搜索栏时如何隐藏部分标题?

tvOS UISearchController - 滚动时如何避免自动搜索栏和键盘隐藏行为?

显示和隐藏 uisearchcontroller 时调用的函数

如何隐藏弹出的 UISearchController

如何在导航栏内隐藏 UISearchController