我在其UISearchController
旁边使用UISearchBar
。其UISearchController
旁边的UITableView
位于主视图的子视图中。
我的目标是锁定 UISearchBar,因此当它处于活动状态时,它不会移动。现在发生以下情况:
我已经广泛搜索过这个问题并尝试了以下内容,例如:
self.searchController.hidesNavigationBarDuringPresentation = false
,它突然将搜索栏移动到屏幕中间。
definesPresentationContext = true
,不会改变行为
self.extendedLayoutIncludesOpaqueBars = true
,不会改变行为
使用提到的UIBarPositioningDelegate
方法here,奇怪地无法将其转换为Swift,因为我无法在Objective C版本中插入AnyObject<UIBarPositioning>
并仍然拥有它被识别为override
函数
任何建议表示赞赏。
编辑:
以下是搜索项目的设置:
searchController.searchResultsUpdater = self
searchController.dimsBackgroundDuringPresentation = false
definesPresentationContext = true
searchTableView.tableHeaderView = searchController.searchBar
答案 0 :(得分:1)
在Storyboard中将TableView的Style
属性设置为Plain
,并使用SearchBar作为节标题视图。除了以下代码之外,我在Apple&#34;表搜索中使用UISearchController评论了tableView.tableHeaderView = searchController.searchBar
&#34;例子,它运作良好。
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return searchController.searchBar.frame.size.height
}
override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
return searchController.searchBar
}