我有 3 个按钮可以通过搜索从 tableview 中选择 3 个项目。 一切正常,直到我搜索并选择一行。
当我选择 row..it 打印“nothing selected”,我将其包含在 switch 语句 default 的代码中。
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if isSearching == true{
tableData = filteredArray
switch filteredArray {
case signUser.countries:
signUser.country = tableData[indexPath.row]
self.btnCountry.titleLabel?.text = signUser.country
print(signUser.country)
case signUser.dawatTitles:
signUser.dawatName = tableData[indexPath.row]
self.btnDawat.titleLabel?.text = signUser.dawatName
case signUser.nationalities:
signUser.nationality = tableData[indexPath.row]
self.btnNationality.titleLabel?.text = signUser.nationality
default:
print("nothing selected")
}
}
else if isSearching == false{
tableData = unfilteredArray
switch unfilteredArray{
case signUser.countries:
signUser.country = tableData[indexPath.row]
print(signUser.country)
case signUser.dawatTitles:
signUser.dawatName = tableData[indexPath.row]
print(signUser.dawatName)
case signUser.nationalities:
signUser.nationality = tableData[indexPath.row]
print(signUser.nationality)
default:
print("dsds")
}
}
}
当我搜索并选择国家或任何项目时..它应该打印选定的国家或行。
不用搜索也能用
最佳答案
你有你的按钮操作(我在你编辑问题之前看到了这个):
self.unfilteredArray = signUser.dawatTitles
// ...
self.unfilteredArray = signUser.countries
//...
self.unfilteredArray = signUser.nationalities
并且在从 TableView 切换时基本上选择了你
//...
switch filteredArray {
case signUser.countries:
//...
// is the filteredArray the signUser.countries ?
// well … never because you never assing them
解决方案:
将按钮的选择保持在可变状态
有点像:
enum Options {
case dawatTitles
case countries
case nationalities
}
var lastSelection: Options?
/// ... when a button is pressed
lastSelection = Options.nationalities //for example
and in the table view did select
switch lastSelection {
case countries:
// is searching ... bla bla
不过...您的代码中似乎还有其他可以改进的地方。
关于ios - 无法选择或打印搜索栏过滤数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55917780/