我正在尝试在我的其中一个屏幕中实现搜索功能。这是发布的代码...
func searchBarTextDidBeginEditing(searchBar: UISearchBar) {
searchActive = true;
}
func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {
searchActive = false;
}
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
searchActive = false;
}
func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
searchActive = false;
}
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
if searchText != "" {
// Filter the results
searchActive = true
//allTheData is an object of an array of struct
filtered = self.allTheData.filter { _ in (searchText.lowercased().contains(searchText.lowercased())) }
if(filtered.count == 0){
searchActive = false;
} else {
searchActive = true;
}
self.tableView.reloadData()
}}
cellForRow
中的代码如下:
if(searchActive){
let filtObj = filtered[indexPath.row]
cell.nameLabel.text = filtObj.customer_name
cell.amtLabel.text = "\(filtObj.total_sales)"
} else {
let dataObj = allTheData[indexPath.row]
cell.nameLabel.text = dataObj.customer_name
cell.amtLabel.text = "\(dataObj.total_sales)"
}
numberOfRows
中的代码如下:
if(searchActive) {
return filtered.count
}
return allTheData.count
但是搜索没有发生。不知道是什么原因。希望有人能帮忙...
最佳答案
你的过滤逻辑有误
filtered = self.allTheData.filter { $0.lowercased().contains(searchText.lowercased()) }
关于ios - 使用搜索栏的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47606571/