我在下面的代码中尝试删除行。当行不是最后一部分时,一切都没问题,但当它是最后一部分时 - 应用程序崩溃
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已删除)。'
有标准方法吗?
答案 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)
}
}
}