Swift 3.0 iOS 10.x
使用此代码尝试删除表中的一行...
override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == UITableViewCellEditingStyle.delete {
print("DELETE \(indexPath)")
self.tableView.deleteRows(at: [indexPath], with: UITableViewRowAnimation.automatic)
}
}
失败并出现错误消息?
2017-05-29 13:36:23.843228+0200[939:576777] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (9) must be equal to the number of rows contained in that section before the update (9), plus or minus the number of rows inserted or deleted from that section (0 inserted, 1 deleted) and plus or minus the number of rows moved into or out of that section (0 moved in, 0 moved out).'
这听起来很公平,只是这是样板代码?我所做的只是点击红色按钮?
是的,这里有 3 行...在我崩溃的代码中有 9 行。
我在这里错过了什么?这里打印出返回的indexPath确实是错误的,但是等等我没有设置它。这个方法做了吗?
删除 [0, 3]
最佳答案
在 tableView
中删除之前,您必须先删除数据数组中的行
override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == UITableViewCellEditingStyle.delete {
print("DELETE \(indexPath)")
yourArray.remove(at: indexPath.row) /* delete in data array */
self.tableView.deleteRows(at: [indexPath], with: UITableViewRowAnimation.automatic)
}
}
关于ios - NSInternalInconsistencyException tableView 行删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48253222/