首页 > 解决方案 > 无法选择或打印搜索栏过滤数组

问题描述

我有 3 个按钮可以通过搜索从 tableview 中选择 3 个项目。一切正常,直到我搜索并选择一行。

当我选择行时..它会打印“未选择任何内容”,我将其包含在 switch 语句默认代码中。

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")
        }
    }
}

当我搜索并选择国家或任何项目时..它应该打印选定的国家或行。

它无需搜索即可工作

标签: iosswiftuitableview

解决方案


你有你的按钮动作(我在你编辑问题之前看到了这个):

        self.unfilteredArray = signUser.dawatTitles
// ...
        self.unfilteredArray = signUser.countries
//...
        self.unfilteredArray = signUser.nationalities

并且在表格视图的切换中基本上选择了你

//...
        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

仍然......您的代码中似乎还有其他可以改进的东西。


推荐阅读