Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift-带单独搜索结果控制器的UISearchController_Ios_Swift_Xcode_Uisearchcontroller - Fatal编程技术网

Ios Swift-带单独搜索结果控制器的UISearchController

Ios Swift-带单独搜索结果控制器的UISearchController,ios,swift,xcode,uisearchcontroller,Ios,Swift,Xcode,Uisearchcontroller,当您想在单独的searchResultsController中显示搜索结果时,我试图找出如何使用UISearchController—我找到的每一本指南、视频和教程都使用了当前的viewController来显示搜索结果,并实例化UISearchController,如下所示: let searchController = UISearchController(searchResultsController: nil) class resultsController: UITableViewC

当您想在单独的searchResultsController中显示搜索结果时,我试图找出如何使用UISearchController—我找到的每一本指南、视频和教程都使用了当前的viewController来显示搜索结果,并实例化UISearchController,如下所示:

let searchController = UISearchController(searchResultsController: nil)
class resultsController: UITableViewController, UISearchResultsUpdating {
但是我想把视图调暗,并用搜索结果显示一个新的tableView,就像在AppStore搜索中一样。我所做的是创建一个新的tableViewController,给它一个故事板id,然后像这样实例化它:

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let resultsController = storyboard.instantiateViewController(withIdentifier: "searchResults") as! UITableViewController
let searchController = UISearchController(searchResultsController: resultsController )
这似乎有效。然而,从现在起我就被困在这里了。我不知道如何在resultsController中显示搜索结果,不知道在resultsController的cellForRowAtIndexPath中放置什么,等等


感谢您的帮助

设法弄明白了-

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

searchController.searchResultsUpdater = resultsController
func updateSearchResults(for searchController: UISearchController) {

}
2) 将UISearchResultsUpdated添加到结果控制器,如下所示:

let searchController = UISearchController(searchResultsController: nil)
class resultsController: UITableViewController, UISearchResultsUpdating {
3) 在ResultController中添加此函数:

searchController.searchResultsUpdater = 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()

    }

}

希望它能帮助别人

如何将信息从那里解析回初始ViewController?例如,当选择UITableViewCell时?使用自定义协议或通过didSelectRow,然后以编程方式将其关闭并将结果解析回初始VC?是否可以使用段控件让UISearchController在两个搜索结果视图之间切换?这确实帮了我的忙,谢谢