我有一个表视图,其中包含一定数量的行。使用同一ViewController上的按钮,我想弹出tableView行之一。但是,我无法这样做。请注意,我不是在使用表格视图的编辑样式,而是在同一ViewController上使用按钮从tableView中删除一行。
func postAction() {
postTable.deleteRows(at: [IndexPath(row: 0, section: 0)] , with: .fade)
}
但是这会导致崩溃。我不确定为什么会这样,我应该如何纠正。我打算从tableView(postTable)的唯一部分中删除第一行
由于未捕获的异常“ NSInternalInconsistencyException”而终止应用程序,原因:“无效的更新:第0节中的行数无效。
更新(3)之后,现有节中包含的行数必须等于更新(3)之前该节中包含的行数,加上或减去从该节中插入或删除的行数(已插入0) ,删除1个),然后加上或减去移入或移出该部分的行数(移入0,移出0)。'
我的代码:
postTable.delegate = self
postTable.dataSource = self
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 3
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = JobPostCellView(style: UITableViewCellStyle.default , reuseIdentifier: "PostCell")
cell.delegate = self
cell.name = arr[indexPath.row]
return cell
}
答案 0 :(得分:2)
尝试
.htaccess.
这可能是因为您的tableview行与数据源的section方法中的行数不匹配而返回的行
例如
func postAction() {
let indexPath = IndexPath(row: 0, section: 0)
yourmodel.remove(at: indexPath.row)//update your model also here
postTable.deleteRows(at: [indexPath] , with: .fade)
}
如果您在numberOfRowsInSection中返回10,则表中将有10行
现在您要从中删除1行,因此行将为9,但是您的numberOfRowsInSection方法仍然返回10,因此这将导致不一致,因此您必须更新numberOfRowsInSection部分中的计数以返回9
如果使用动态数组,则必须像在答案中一样将其从数组中删除