Swift 如何将searchController与searchResultsController一起使用?

Swift 如何将searchController与searchResultsController一起使用?,swift,uitableview,tableview,uisearchcontroller,uisearchresultscontroller,Swift,Uitableview,Tableview,Uisearchcontroller,Uisearchresultscontroller,我创建了一个搜索控制器,并向其中添加了一个searchResultsController 斯威夫特 let searchController=UISearchController(searchresultcontroller:SearchResultVC()) 我的搜索逻辑在updateSearchResults方法中工作,每次搜索时都会触发。当然,这是由UISearchResultsUpdateing协议提供的。在这里,我将把我要查找的列表添加到SearchResultVC中的tableVi

我创建了一个搜索控制器,并向其中添加了一个searchResultsController

斯威夫特

let searchController=UISearchController(searchresultcontroller:SearchResultVC())
我的搜索逻辑在updateSearchResults方法中工作,每次搜索时都会触发。当然,这是由UISearchResultsUpdateing协议提供的。在这里,我将把我要查找的列表添加到SearchResultVC中的tableView数据中,并重新加载tableView

斯威夫特

func updateSearchResults(对于searchController:UISearchController){
guard let searchText=searchController.searchBar.text else{return}
如果让vc=searchController.searchResultsController为?SearchResultVC{
vc.searchText=searchText
vc.rementerList=搜索(searchText:searchText)
如果让vcTableView=vc.searchTableView{//,则不会触发此处
vcTableView.dataSource=vc
vcTableView.delegate=vc
vcTableView.reloadData()
打印(“重新加载”)
}
}
}
最后,我将在新打开的searchViewController中显示我的数据

SearchResultVC.swift

最终类SearchResultVC:UIViewController{
变量提醒列表:[提醒列表]=[]
var searchText:String?
@ibvar searchTableView:UITableView!
重写func viewDidLoad(){
super.viewDidLoad()
self.searchTableView.delegate=self//此处崩溃
self.searchTableView.dataSource=self//此处崩溃
}
}
我的问题是无法重新加载。重载()所在的分区未被触发。另外,新打开的页面是
self.searchTableView.delegate=self
self.searchTableView.dataSource=self
崩溃

如何正确触发
vcTableView.reloadData()

编辑

发生此错误。

UITableViewDelegate
UITableViewDatasource
绑定到您的viewcontroller(SearchResultVC)类。我没有把它放在这里,但我放了。我还意识到if中的
打印(“重新加载”)
没有被触发,因为它没有被触发@RB’是的,它不会被调用,因为您在那里为控制器使用了
闭包
,所以您的控制器也需要完成该方法的调用。如何在那里添加调用完成@RB’我猜您的控制器初始化不正确,请检查以下内容: