我想弄清楚当您想在单独的searchResultsController中显示结果时如何使用UISearchController-我发现的每一个指南,视频和教程都都使用了当前的viewController来呈现搜索结果,并实例化UISearchController像所以:
let searchController = UISearchController(searchResultsController: nil)
但我想使 View 变暗,并以与App Store搜索相同的方式呈现带有搜索结果的新tableView。因此,我要做的是创建一个新的tableViewController,为其指定一个Storyboard ID,然后将其实例化为:
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let resultsController = storyboard.instantiateViewController(withIdentifier: "searchResults") as! UITableViewController
let searchController = UISearchController(searchResultsController: resultsController )
这似乎有效。但是,从现在开始我一直很固执。我不知道如何在resultsController中显示搜索结果,在resultController中的cellForRowAtIndexPath中放置什么,等等。
任何帮助表示赞赏!
最佳答案
设法弄清楚-
1)在实例化searchController时添加以下行:
searchController.searchResultsUpdater = resultsController
2)将UISearchResultsUpdating添加到您的resultsController中,如下所示:
class resultsController: UITableViewController, UISearchResultsUpdating {
3)在您的resultsController中添加此功能:
func updateSearchResults(for searchController: UISearchController) {
}
从那里,您可以获取搜索文本,对其进行处理,然后重新加载tableView:
func updateSearchResults(for searchController: UISearchController) {
let searchText = searchController.searchBar.text!
//Do Stuff with the string
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
希望它可以帮助某人!