[英]How to hide UITableView before searching anything in search bar in swift
嘿,任何人都可以帮我解决如何在搜索栏中搜索任何内容之前隐藏我的表格视图。 就我而言,这是一个文本字段,我尝试了不同的方法,但没有任何效果
这是我的搜索位置代码:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if !searchedArray.isEmpty {
return searchedArray.count
}
return filtered ? 0 : LocationData.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
if !searchedArray.isEmpty{
cell.textLabel?.text = searchedArray[indexPath.row]
}else{
cell.textLabel?.text = LocationData[indexPath.row]
}
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
// selectedCell = indexPath
//tableView.isHidden = true
searchTextField.text = searchedArray[indexPath.row]
}
//mark uitextfield delegates
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if let text = textField.text {
//typed text comes here
filterText(text+string)
}
return true
}
func filterText(_ query: String){
searchedArray.removeAll()
for str in LocationData {
if str.lowercased().starts(with: query.lowercased()){
searchedArray.append(str)
}
}
searchTableView.reloadData()
filtered = true
}
另外,当我搜索位置时,如何删除表格视图中显示的额外行
这是删除多余单元格的方法
func filterText(_ query: String){
searchedArray = LocationData.filter({$0.lowercased().contains(query.lowercased())})
searchTableView.reloadData()
filtered = true
}
如果你想隐藏 tableView
var searchedArray = [YourType]() {
didSet {
searchTableView.isHidden = searchedArray.count == 0
}
}
但我不认为隐藏 tableView 是更好的选择,以防在搜索栏文本字段上显示 0 个单元格
func textFieldDidBeginEditing(_ textField: UITextField) {
self.filtered = true
self.searchTableView.reloadData()
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.