无法删除索引路径中的行

时间:2017-11-23 12:51:37

标签: ios swift uitableview indexpath

我有一些tableview单元格,上面有一些数据,单元格上有一个十字按钮(右上角),单击该单元格应删除单元格。这就是我试图删除的方式......

extension sellTableViewController: imageDelegate {
    func delete(cell: sellTableViewCell) {
        if let indexPath = tableview?.indexPath(for: cell) {
            //1.Delete photo from datasource
            arrProduct?.remove(at: indexPath.row)
            print(self.appDelegate.commonArrForselectedItems)

            tableview.deleteRows(at: [indexPath], with: .fade)

        }
    }
}

但是当我点击十字按钮时,我收到一条错误消息The number of sections contained in the table view after the update (1) must be equal to the number of sections contained in the table view before the update (2), plus or minus the number of sections inserted or deleted (0 inserted, 0 deleted).'

我的tableview numberOfSectionsnumberOfRowsInSection如下所示......

    func numberOfSections(in tableView: UITableView) -> Int {
        return (arrProduct?.count)!

    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

        let product = arrProduct![section]

        return product.images.count
    }
希望有人能帮忙......

2 个答案:

答案 0 :(得分:2)

您要从indexPath.row中删除数组中的项目,但您的数组包含的部分不是行

只有一行错误替换

        arrProduct?.remove(at: indexPath.row)

        arrProduct?.remove(at: indexPath.section)

希望它对你有所帮助

修改

我认为你是从数组中删除图像

arrProduct![indexPath.section].images.remove(at: indexPath.row)

答案 1 :(得分:0)

您的代码会混淆部分和行。您所说的部分数量取决于产品数量(arrProduct?.count),行数取决于产品中部分(arrProduct![section].images.count)的图像数量。

但是在您的delete功能中,您删除了一个产品(arrProduct?.remove(at: indexPath.row)),该产品对应于某个部分,但随后您删除了该表中的一行。

确保在使用产品(部分)和图像(行)时清楚。