在 viewDidload
中,我实例化 UISearchController
并将其搜索栏添加到 TableView 的标题 View 中,这是标准过程。
如果我点击搜索栏并输入一些文本,则会显示结果,我可以在此处取消搜索,没有问题。
如果我选择其中一个结果行,插入下一个屏幕,弹出并在此处取消,搜索栏就会出现故障。
这是我的搜索 Controller :
// MARK : SearchController ! //
var searchController : UISearchController!
var resultsController = UITableViewController()
///////////
override func viewDidLoad() {
super.viewDidLoad()
definesPresentationContext = true
self.resultsController.tableView.dataSource = self
self.resultsController.tableView.delegate = self
self.searchController = UISearchController(searchResultsController: self.resultsController)
self.tableView.tableHeaderView = self.searchController.searchBar
self.searchController.searchResultsUpdater = self
self.searchController.dimsBackgroundDuringPresentation = true
self.searchController.searchBar.sizeToFit()
self.searchController.searchBar.barTintColor = UIColor.blackColor()
self.searchController.searchBar.endEditing(true)
self.searchController.searchBar.placeholder = "חפש ברים"
self.searchController.hidesNavigationBarDuringPresentation = false
self.searchController.searchBar.delegate = self
}
整个搜索栏出现故障的 UI 示例:
就像搜索栏不再是tableHeaderView
一样,它破坏了tableview
将最后一个单元格和第一个单元格切成两半。
tableView 的常规外观示例:
提前谢谢您!
最佳答案
在尝试了大量设置后,我自己设法找到了解决方案,我不知道为什么这些特定设置可以解决问题,但以下是为我解决问题的方法:
属性检查器中的设置:
viewDidLoad 中的设置:
override func viewDidLoad() {
super.viewDidLoad()
//MARK : Fixes SearchBar Bugs
self.resultsController.edgesForExtendedLayout = .All
self.searchController.edgesForExtendedLayout = .All
self.resultsController.extendedLayoutIncludesOpaqueBars = true
// End of Bug Fixes.
关于ios - UISearchController 中的取消按钮导致 SearchBar 故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41504038/