UISearchController 搜索栏不隐藏导航栏

UISearchController search bar does not hide navigation bar

我有一个 UITableViewController 作为我 UINavigationController 的根。激活搜索栏不会隐藏导航栏。我尝试了很多不同的配置,其中 none 似乎有效。

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

这是我的屏幕在激活时的样子。

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

编辑:视图也没有变暗

您可能需要这一行,我认为这可以解决您的问题:

search_controller. hidesNavigationBarDuringPresentation = true

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

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

table_header_view @search_controller.searchBar

希望这对以后的人有所帮助,这样他们就不必浪费时间思考为什么它不起作用。