所以我有一个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吗?
或者我需要添加单元格并在之后删除它?这听起来不对。
答案 0 :(得分:1)
我会有两个数据数组:
allDataArray - 所有元素
filteredDataArray - 符合您的过滤器的元素
如果您使用 filteredArray 作为数据源,则不必将该逻辑放在cellForRow方法中。
相反,请使用选择器委托方法过滤 allDataArray 并将其放在 filteredDataArray 上。