TableView 确实选择了方法和切换



我有tableView我需要选择 3 个单元格,即使我滚动它也会保持原样。我可以选择 1、2 或 3 个单元格,但不能选择 4 个或更多。当我选择 4 个单元格时,应该什么都不会发生。如果有3个选定的单元格,并且我单击其中一个,则应取消选择我选择的单元格。

如果您有模型,请使用该模型。仅修改视图不是永久性的。

在模型中添加属性

var isSelected = false

cellForRowAt根据模型设置isSelected(假设items是数据源数组)

let item = items[indexPath.row]
cell.isSelected = item.isSelected

通过筛选和计数所选项目来实现willSelectRowAt来处理 3 项限制。如果该方法返回nil则无法选择该行。

func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath? {
return items[indexPath.row].isSelected || items.filter{$0.isSelected}.count < 3 ? indexPath : nil
}

didSelect切换isSelected并重新加载行

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
items[indexPath.row].isSelected.toggle()
tableView.reloadRows(at: [indexPath], with: .automatic)
}

indexPathsForSelectedRowsallowsMultipleSelection分别不需要,后者必须设置为永久true

最新更新