swift - 如何将 searchController 与 searchResultsController 一起使用?
问题描述
我创建了一个搜索控制器并向其中添加了一个 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()
正确触发?
编辑
解决方案
推荐阅读
- http - Golang 大响应 JSON 输入意外结束
- nagios - Nagios 核心摘要宏的计数错误
- eclipse - Jboss 6.1 Eclipse 4.19.0 集成
- python - 如果管理员在 tempbooking django 中将 is_active 更改为“true”,则尝试将所有信息从 Tempbooking 模型解析到 Booking 模型
- javascript - Vue3 - 在路由更改后构建 API url 并获取数据
- apache-spark - 将非常大的外部数据读入 Spark DataFrame
- powershell - 在执行 Enable-psremoting 时出现存储错误
- xamarin.forms - 无法访问已释放的对象。\n对象名称: 'PrimaryToolbarItem'
- hadoop - 在 Windows 上安装 Hive
- python - 基于临时变量的变量更新