我已经看过很多关于这个主题的话题,但我仍然有错误......
这是我在tableview委托方法中的代码(当用户滑动并单击单元格上的删除按钮时调用):
self.tableView.beginUpdates()
if self.data[sectionType]!.isEmpty {
self.data.removeValue(forKey: sectionType)
}
self.tableView.deleteRows(at: [indexPath], with: .fade)
self.tableView.endUpdates()
我已经实现了numberOfSections委托方法,如下所示:
func numberOfSections(in tableView: UITableView) -> Int {
return data.count
}
这是我得到的错误:
***由于未捕获的异常终止应用程序' NSInternalInconsistencyException',原因:' UITableView内部错误:无法生成旧部分计数的新部分地图:1和新部分计数:0& #39;
如果我用reloadData()替换deleteRows(在tableView中)方法,我会得到同样的错误......
我用断点检查,当错误发生时我输入if条件。所以数据被更新(removeValue()调用后的0个元素),我调用了deleteRows方法。
感谢您的帮助。
答案 0 :(得分:0)
您是要删除行还是部分?
if self.data[sectionType]!.isEmpty {
self.data.removeValue(forKey: sectionType)
}
建议您尝试删除某个部分。如果你是,那么应该跟这类东西:
let indexSet = NSMutableIndexSet()
indexSet.addIndex(section)
self.tableView.deleteSections(indexSet, withRowAnimation: .fade)
如果您要删除一行,请将顶部更改为以下内容:
if self.data[sectionType]!.isEmpty {
self.data[sectionType].remove(at: rowToRemove)
}
答案 1 :(得分:0)
看起来您可能正在删除该部分中的所有行,而不是一个单元格。
我假设self.data
是一个字典,其中键是部分,值是包含单元格信息的数组。
而不是删除字典的键。就像你在这里......
self.data.removeValue(forKey: sectionType)
您可能想要访问该部分并仅删除该行。像这样......
data[sectionType]?.remove(at: indexPath.row)
我假设您对方法numberOfRowsInSection:
的返回值类似于......
return data[sectionType]?.count
希望这在某种程度上有所帮助。