是由于搜索控制器的默认行为导致的。当用户开始在搜索栏中输入文本时,搜索控制器会自动将搜索结果显示在一个新的视图上,而不是在原始的tableView中。
要解决这个问题,可以通过以下步骤来实现在tableView中搜索并滚动的功能:
let searchController = UISearchController(searchResultsController: nil)
searchController.searchResultsUpdater = self
searchController.obscuresBackgroundDuringPresentation = false
searchController.searchBar.placeholder = "搜索"
tableView.tableHeaderView = searchController.searchBar
extension YourViewController: UISearchResultsUpdating {
func updateSearchResults(for searchController: UISearchController) {
// 根据搜索栏中的文本更新搜索结果
let searchText = searchController.searchBar.text ?? ""
// 更新搜索结果数组
// ...
// 刷新tableView
tableView.reloadData()
}
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if searchController.isActive {
return searchResults.count
} else {
return originalData.count
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
if searchController.isActive {
// 根据搜索结果数组设置cell的内容
// ...
} else {
// 根据原始的数据源数组设置cell的内容
// ...
}
return cell
}
通过以上步骤,你可以在UISearchController中实现在tableView中搜索并滚动的功能。当用户在搜索栏中输入文本时,tableView会根据搜索结果进行更新,并且可以正常滚动查看搜索结果。
腾讯云相关产品和产品介绍链接地址:
云+社区沙龙online第5期[架构演进]
Game Tech
Game Tech
Game Tech
云+社区技术沙龙[第19期]
腾讯技术创作特训营第二季
云原生正发声
Elastic 中国开发者大会
Elastic 中国开发者大会
Elastic 中国开发者大会
Elastic 实战工作坊
领取专属 10元无门槛券
手把手带您无忧上云