NavigationBar IOS中的SearchBar

我尝试使用导航栏大标题,并添加search栏导航控制器。 search栏显示在导航标题下。 它应该隐藏,直到我刷下来。 我明白,默认行为是隐藏的,除非我设置“navigationItem.hidesSearchBarWhenScrolling = false”。 即使我添加“navigationItem.hidesSearchBarWhenScrolling = true”,它不起作用。

我创build了一个新的应用程序来testing这个function。 它embedded了ViewController和Navigation Controller。 以下是我的代码:

class ViewController: UIViewController { let searchController = UISearchController(searchResultsController: nil) override func viewDidLoad() { super.viewDidLoad() navigationController?.navigationBar.prefersLargeTitles = true navigationItem.searchController = searchController // navigationItem.hidesSearchBarWhenScrolling = true } } 

我遇到过类似的情况。 我已经解决了这个问题:

1-删除有关searchController的一切

2-将UISearchBar控件添加到您的表中

在这里输入图像说明

3-将此searchBar控件连接到IBOutletvariables并设置委托

 searchBar.delegate = self 

4-只使用UISearchBarDelegate(移除UISearchResultsUpdating)并实现textDidChange方法

 func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) { filter... reload table... } 

此表格标题search栏适用于iOS 11及更早版本