search栏在input时从视图中消失

我在ViewDidLoad()添加了SearchBar到我的TableView中:

  self.searchBar = UISearchController(searchResultsController: nil) self.searchBar.searchResultsUpdater = self self.searchBar.dimsBackgroundDuringPresentation = false self.searchBar.searchBar.sizeToFit() self.tableView.tableHeaderView = self.searchBar.searchBar self.tableView.reloadData() 

一切工作正常,但是当我点击这个SearchBar它消失。 这意味着,我仍然可以打字,我可以看到结果,但是,没有看到SearchBar 。 我实现了UISearchBarDelegate ,我一直在试图添加

 func searchBarTextDidBeginEditing(searchBar: UISearchBar) { self.navigationController?.navigationBarHidden = false } func searchBarTextDidEndEditing(searchBar: UISearchBar) { self.navigationController?.navigationBarHidden = true } 

但它仍然不起作用。 你有什么想法,为什么这个Search Bar消失?

这个问题的解决方法是(像@sandy悲伤)在viewDidLoad()写这行代码

  self.aNavigationController?.extendedLayoutIncludesOpaqueBars = true 

但现在我有一个新的问题,这是什么意思当我在TableViewselect行并显示新的VievControllerSearchBar不会消失,我在新的视图中看到它。 为什么?

您需要在viewDidLoad()中将extendedLayoutIncludesOpaqueBars设置为true。

 self.aNavigationController?.extendedLayoutIncludesOpaqueBars = true 

其实search Bar没有隐藏,只是根据文本调整它的widthheight

从代码中删除这一行,它会正常工作。

 self.searchBar.searchBar.sizeToFit()