使命:部分删除:)

时间:2017-06-07 15:04:53

标签: arrays swift uitableview animation

我在下面的代码中尝试删除行。当行不是最后一部分时,一切都没问题,但当它是最后一部分时 - 应用程序崩溃

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
    if editingStyle == .delete {
        if let item = shopList.getItem(index: indexPath) {
            shopTableView.beginUpdates()

            let indexSet = NSMutableIndexSet()
            indexSet.add(indexPath.section - 1)
            shopTableView.deleteRows(at: [indexPath], with: .fade)
            //shopTableView.deleteSections(indexSet as IndexSet, with: UITableViewRowAnimation.automatic)



            shopList.remove(item: item)

            shopTableView.endUpdates()

        }
    }
}

我收到了错误

  

' NSInternalInconsistencyException',原因:'无效更新:无效>部分数量。更新后的表格视图>中包含的部分数量(1)必须等于>更新前的表格视图中包含的部分数量(2),加上或减去部分数量>插入或已删除(0已插入,0已删除)。'

有标准方法吗?

1 个答案:

答案 0 :(得分:0)

我在下面更改了我的代码,它可以正常工作

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
    if editingStyle == .delete {
        if let item = shopList.getItem(index: indexPath) {
            shopTableView.beginUpdates()
            let sectionStatus = shopList.remove(item: item)
            shopTableView.deleteRows(at: [indexPath], with: .fade)
            if sectionStatus == .sectionEmpty  {
                let indexSet = IndexSet(integer: indexPath.section)
                shopTableView.deleteSections(indexSet, with: UITableViewRowAnimation.automatic)
            }
            shopTableView.endUpdates()
            totalLabel.update(value: shopList.total)

        }
    }

}