【发布时间】:2017-04-29 03:06:44
【问题描述】:
尝试从UITableView 中删除一行时出现错误:
这是我的表格视图的数据:
var tmpArray = ["test"];
TableView 获取行数的方法如下:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return tmpArray.count;
}
这是我调用删除行的方法的主体:
self.tableView.deleteRows(at: [indexPath], with: UITableViewRowAnimation.automatic);
tmpArray.remove(at: 0);
这是错误:
由于未捕获的异常而终止应用程序 'NSInternalInconsistencyException',原因:'无效更新:无效 第 0 节中的行数。包含在第 0 节中的行数 更新后的现有节(1)必须等于 更新 (1) 之前该部分中包含的行,加号或减号 从该部分插入或删除的行数(0 插入, 1 已删除)并加上或减去移入或移出的行数 该部分(0 移入,0 移出)。'
奇怪的是,在该行被删除之前,节中应该有 1 行,而不是 2 行。
关于为什么会发生此错误的任何想法?
我查看了几篇帖子,虽然相关,但此处提供的解决方案不起作用: UITableView Deleteing row error
更新 当我单独调用删除命令时,错误仍然存在:
tmpArray.remove(at: 0);
self.tableView.deleteRows(at: [indexPath], with: UITableViewRowAnimation.automatic);
错误:
由于未捕获的异常而终止应用程序 'NSInternalInconsistencyException',原因:'无效更新:无效 第 0 节中的行数。包含在第 0 节中的行数 更新后的现有节(0)必须等于 更新之前该部分中包含的行 (0),加号或减号 从该部分插入或删除的行数(0 插入, 1 已删除)并加上或减去移入或移出的行数 该部分(0 移入,0 移出)。'
【问题讨论】:
-
您的更新也不例外。正如我在回答中所说,您需要交换这两行。在拨打
deleteRows之前先拨打tmpArray.remove(at:0)。 -
我在发布更新时犯了一个错误。我确实在 Xcode 中反转了这些行。现在添加真正的代码。
-
显示更多代码。您的问题没有足够的上下文。
标签: ios swift uitableview tableview