我的多重选择表视图有问题。如果我取消选择以前选择的行的顺序与选择顺序不同,则会收到错误消息。它说
索引超出范围 我在尝试删除数组中的项目时收到此错误。这是我的代码:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if tableView.cellForRow(at: indexPath)?.accessoryType == UITableViewCell.AccessoryType.checkmark{
tableView.cellForRow(at: indexPath)?.accessoryType = UITableViewCell.AccessoryType.none
//Line above occurs the error
checkedCategories.remove(at: indexPath.row)
}else{
tableView.cellForRow(at: indexPath)?.accessoryType = UITableViewCell.AccessoryType.checkmark
checkedCategories.append(allcategories[indexPath.row])
}
}
答案 0 :(得分:0)
您总是在数组末尾添加项目(因此添加项目的索引为checkedCategories.count - 1
)。但是按行索引删除。
因此,获取行的索引而不是行索引,然后按该索引删除
if let index = checkedCategories.firstIndex(of: allcategories[indexPath.row]) {
checkedCategories.remove(at: index)
}