问题描述
我创建了一个搜索控制器并向其中添加了一个 searchResultsController。
MainController.swift
let searchController = UISearchController(searchResultsController: SearchResultVC())
我的搜索逻辑在 updateSearchResults 方法中工作,每次进行搜索时都会触发。这当然是由 UISearchResultsUpdating 协议提供的。这里我将我要查找的列表添加到SearchResultVC中tableView的数据中,并重新加载tableView。
MainController.swift
func updateSearchResults(for searchController: UISearchController) {
guard let searchText = searchController.searchBar.text else { return }
if let vc = searchController.searchResultsController as? SearchResultVC {
vc.searchText = searchText
vc.reminderList = search(searchText: searchText)
if let vcTableView = vc.searchTableView { // HERE ISN'T TRIGGERED
vcTableView.dataSource = vc
vcTableView.delegate = vc
vcTableView.reloadData()
print("reloaded")
}
}
}
最后,我会在新打开的searchViewController中展示我的数据。
SearchResultVC.swift
final class SearchResultVC: UIViewController {
var reminderList: [ReminderList] = []
var searchText: String?
@IBOutlet weak var searchTableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
self.searchTableView.delegate = self // HERE IS CRASHED
self.searchTableView.dataSource = self // HERE IS CRASHED
}
}
我的问题是无法重新加载。不触发reload()所在的分区。此外,新打开的页面是 self.searchTableView.delegate = self
并且 self.searchTableView.dataSource = self
崩溃了。
如何正确触发vcTableView.reloadData()
?
编辑
发生此错误。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)