只有在满足某些条件时才添加单元格

问题描述:

所以我有一个结构数组,我从我的json添加数据。同一阵列中有不同类型的数据。只有在满足某些条件时才添加单元格

struct PersonData { 
    let name: String 
    let age: String 
    let sex : String 
} 

我想要做的是实现一个pickerView,它将根据用户选择的内容重新加载表视图。可以说我有2个选择器视图,用户可以选择性别和年龄。

因此,如果他选择了所有17岁的男性,我只想在桌面视图上显示。

我已经可以得到阵列上的计数,但我不能在UITableViewCell方法

我想要做这样的事情返回nil:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

     let cell = tableView.dequeueReusableCell(withIdentifier: "reuseCell", for: indexPath) as! CellTeatroTableViewCell 

     if(option == 0) //All persons. Default option 
     { 
      cell.name.text = dataArray[indexPath.row].name 
      return cell 

     } 
     else 
     { 
      if(dataArray[indexPath.row].age == agePickerOption || dataArray[indexPath.row].sex == sexPickerOption) 
      { 
       cell.name.text = dataArray[indexPath.row].name 
       return cell 
      } 
     } 

     return nil 

    } 

我知道我不能回零,因为他期望一个UITableViewCell,但是如果满足某些条件,它可能只增加indexPath?

或者我需要添加单元格并将其删除后?这听起来不对。

我将有两个数据数组:

allDataArray - 所有元素

filteredDataArray - 元素也应该符合您的过滤器

如果使用filteredArray作为一个DataSource你不必将该逻辑放入cellForRow方法中。

相反,使用机械臂委托方法来过滤allDataArray,并把它放在filteredDataArray

+0

该死的我怎么错过了?这种简单的解决方案。我不知道我怎么会错过使用一个数组作为数据源。非常感谢Lopes! – Adrian

+1

没问题;)良好的编码 – LopesFigueiredo