我目前正在尝试实现UISearchController及其关联的UISearchBar。 我的目标是在我的UITableView上面有一个UISearchBar,它一旦有焦点就会立即上升,如下图所示(我的旧UI与UISearchDisplayController截图,现已弃用):
我已经尝试将我的UISearchBar设置为UITableView的标题,它运行良好,但我有2个问题:
以下是我配置UISearchBar的方式:
func configureSearchController() { // Method called in the viewDidLoad()
searchController = UISearchController(searchResultsController: nil)
searchController!.searchResultsUpdater = self
searchController!.dimsBackgroundDuringPresentation = false
searchController!.searchBar.placeholder = "searchfood.searchbar.placeholder".localized
searchController!.searchBar.sizeToFit()
searchController!.hidesNavigationBarDuringPresentation = false
print(searchController!.searchBar.frame)
// Place the search bar view to the tableview headerview.
foodsTableView.tableHeaderView = searchController!.searchBar
// Search bar
searchController!.searchBar.searchBarStyle = .prominent
searchController!.searchBar.barTintColor = ColorLSDP.corail
searchController!.searchBar.tintColor = ColorLSDP.beige
}
所以我试图删除以下几行:
foodsTableView.tableHeaderView = searchController!.searchBar
但是当我这样做时,我再也看不到UISearchBar了。 在检查了其他一些SO主题之后,我发现我的UISearchBar可能隐藏在我的UINavigationBar下面。所以我尝试在viewDidLoad()方法中添加以下行:
self.navigationController?.navigationBar.isTranslucent = false
self.edgesForExtendedLayout = []
它什么都没改变。 无论如何,它没有解决我的主要问题,即这个搜索栏最初定位如上面的截图。
有没有办法用全新的UISearchController正确地做到这一点?
非常感谢您即将推出的答案, 问候, Seb R。