【发布时间】:2015-05-05 18:07:18
【问题描述】:
所以,我目前正在尝试用 UISearchController 替换我的一个项目中贬低的 searchDisplayController,我遇到了这个问题。
如果搜索中没有结果(UITableView 为空),则整个 ViewController 将被关闭。当搜索结果不为空时,不会发生这种情况。我不想说清楚我没有使用 UITableViewController。相反,我有一个普通的 VC,里面有一个 UITableView。
这是我的一些代码:
var resultSearchController = UISearchController()
override func viewDidLoad() {
super.viewDidLoad()
self.resultSearchController = ({
let controller = UISearchController(searchResultsController: nil)
controller.searchResultsUpdater = self
controller.dimsBackgroundDuringPresentation = false
controller.searchBar.sizeToFit()
controller.delegate = self
controller.searchBar.delegate = self
self.studentTable.tableHeaderView = controller.searchBar
return controller
})()
....
}
现在,如果我将此函数添加到等式中,取消按钮总是会关闭 VC。
func searchBarCancelButtonClicked(searchBar: UISearchBar) {
resultSearchController.active = false
}
那么为什么设置searchController.active = false 会关闭VC?是不是因为它使用了和 VC 一样的 UITableView?我相信旧的 searchDisplayController 只会在正在使用的那个上显示一个 UITableView。如果是这种情况,有没有办法覆盖dismissVC?
【问题讨论】:
-
当您没有将行设置
active包含到false并且您点击取消按钮时会发生什么? -
当它不包括在内时,它只会在没有搜索结果时关闭 VC,如问题所述。如果它被包含,那么它总是在点击取消按钮时执行。
-
当没有搜索结果时关闭,或者当没有搜索结果并且您点击取消时关闭?
-
没有搜索结果,您点击取消。有什么想法吗?
-
找到this very thorough resource。也许
definesPresentationContext = true是关键。
标签: ios uitableview swift uisearchbar uisearchcontroller