仅在满足特定条件时才添加单元格

时间:2016-11-22 15:42:31

标签: swift uitableview

所以我有一个struct数组,我从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

    }

我知道我不能返回nil,因为他期待UITableViewCell但是如果满足某些条件,它只能增加indexPath吗?

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

1 个答案:

答案 0 :(得分:1)

我会有两个数据数组:

allDataArray - 所有元素

filteredDataArray - 符合您的过滤器的元素

如果您使用 filteredArray 作为数据源,则不必将该逻辑放在cellForRow方法中。

相反,请使用选择器委托方法过滤 allDataArray 并将其放在 filteredDataArray 上。