ios – Swift – 带独立searchResultsController的UISearchController

前端之家收集整理的这篇文章主要介绍了ios – Swift – 带独立searchResultsController的UISearchController前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想弄清楚当你想在单独的searchResultsController中显示结果时如何使用UISearchController – 我发现的每个指南,视频和教程都使用当前的viewController来呈现搜索结果,并像实例化UISearchController一样所以:
  1. let searchController = UISearchController(searchResultsController: nil)

但我想调暗视图并使用搜索结果呈现一个新的tableView,就像在App Store搜索上一样.所以我所做的是创建一个新的tableViewController,给它一个storyboard id,然后像这样实例化它:

  1. let storyboard = UIStoryboard(name: "Main",bundle: nil)
  2. let resultsController = storyboard.instantiateViewController(withIdentifier: "searchResults") as! UITableViewController
  3. let searchController = UISearchController(searchResultsController: resultsController )

这似乎工作.但是,我从这里开始就被困住了.我不知道如何在resultsController中显示搜索结果,将什么放在resultsController中的cellForRowAtIndexPath中,等等.

任何帮助表示赞赏!

解决方法

管理好解决

1)在实例化searchController时添加这一行:

  1. searchController.searchResultsUpdater = resultsController

2)将UISearchResultsUpdating添加到resultsController,如下所示:

  1. class resultsController: UITableViewController,UISearchResultsUpdating {

3)添加函数,也在resultsController中:

  1. func updateSearchResults(for searchController: UISearchController) {
  2.  
  3. }

从那里,你可以获得搜索文本,用它做一些东西,并重新加载tableView:

  1. func updateSearchResults(for searchController: UISearchController) {
  2.  
  3. let searchText = searchController.searchBar.text!
  4.  
  5. //Do Stuff with the string
  6.  
  7. DispatchQueue.main.async {
  8.  
  9. self.tableView.reloadData()
  10.  
  11. }
  12.  
  13. }

希望它可以帮助别人!

猜你在找的iOS相关文章