【发布时间】:2017-05-09 11:53:32
【问题描述】:
我有一个连接到表格视图的搜索栏。当搜索栏未激活但单元格选择在搜索栏处于活动状态时禁用时,它完全按照我的意愿工作。我已经对其进行了调试,并且当我在搜索处于活动状态时选择一行时,甚至没有调用 didSelectRowAtIndexPath。这可能是什么原因造成的?
以下是相关代码:
class FabricsViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, UISearchBarDelegate, UISearchControllerDelegate, UISearchDisplayDelegate {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
searchController.delegate = self
searchController.searchBar.delegate = self
searchController.searchResultsUpdater = self
searchController.dimsBackgroundDuringPresentation = false
searchController.definesPresentationContext = false
searchController.hidesNavigationBarDuringPresentation = false
myTableView.tableHeaderView = searchController.searchBar
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if searching {
searching = false
searchBar?.resignFirstResponder()
FirebaseClient.sharedInstance.joinFabric(uid: self.appDelegate.uid!, fabricKey: allFabrics[indexPath.row].key)
updateFabricList()
} else {
appDelegate.selectedFabricKey = joinedFabrics[indexPath.row].key
performSegue(withIdentifier: "fabricSelected", sender: self)
}
myTableView.deselectRow(at: indexPath, animated: false)
}
func filterContentForSearchText(searchText: String, scope: String = "All") {
if let allFabrics = allFabrics {
filteredFabrics = allFabrics.filter { fabric in
return (fabric.name.lowercased().contains(searchText.lowercased()))
}
myTableView.reloadData()
myTableView.setContentOffset(CGPoint.zero, animated: false)
}
}
}
extension FabricsViewController: UISearchResultsUpdating {
func updateSearchResults(for: UISearchController) {
filterContentForSearchText(searchText: searchController.searchBar.text!)
}
}
【问题讨论】:
-
您的问题是什么?说清楚
-
myTableView.deselectRow(at: indexPath, animated: false) 删除这一行并检查它。
-
当搜索栏处于非活动状态时,我可以选择行。但是,当搜索栏变为活动状态并在表格视图中显示过滤列表时,我无法再选择单元格。问题不能取消,因为当搜索栏处于活动状态时,甚至没有调用 didSelectRowAt indexPath。是不是和table view的delegate有关?
-
updateFabricList() 显示你的这个方法
-
尝试设置
searchController. searchBar.clipsToBounds = true