我想弄清楚当您想在单独的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()

    }

}

希望它可以帮助某人!

10-06 01:58