取消选择行时,Swift Multi Selection TableView发生错误

时间:2019-03-23 23:33:28

标签: ios swift

我的多重选择表视图有问题。如果我取消选择以前选择的行的顺序与选择顺序不同,则会收到错误消息。它说

  

索引超出范围   我在尝试删除数组中的项目时收到此错误。这是我的代码:

 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])
    }
}

1 个答案:

答案 0 :(得分:0)

您总是在数组末尾添加项目(因此添加项目的索引为checkedCategories.count - 1)。但是按行索引删除。
因此,获取行的索引而不是行索引,然后按该索引删除

if let index = checkedCategories.firstIndex(of: allcategories[indexPath.row]) {
    checkedCategories.remove(at: index)
}