我正在编写一个代码,其中必须在选择部分时插入和删除所有行。
下面是用于插入和删除的代码
var paths = [IndexPath]()
for row in 0..<(arrayOfSection?.count)! {
let indexPath = IndexPath(row: row, section: selectedIndex!)
paths.append(indexPath)
}
// Toggle collapse
if previousSelectedIndex != nil && previousSelectedIndex == section {
self.arrayOfCategories?.removeAll()
self.catergoryTableView.beginUpdates()
self.catergoryTableView.deleteRows(at: paths, with: .fade)
self.catergoryTableView.endUpdates()
}
else{
self.catergoryTableView.beginUpdates()
self.catergoryTableView.insertRows(at: paths, with: .fade)
self.catergoryTableView.endUpdates()
header.setCollapsed(false)
//scroll
let sectionRect = self.catergoryTableView.rect(forSection: selectedIndex!)
self.catergoryTableView.scrollRectToVisible(sectionRect, animated: true)
}
previousSelectedIndex = selectedIndex
插入行效果很好,但是当我尝试从选定部分删除行时出现以下错误
由于未捕获的异常“ NSInternalInconsistencyException”而终止应用程序,原因:“试图从第0节中删除行9,该行仅包含更新前的0行”
我在做什么错了?
答案 0 :(得分:0)
更新您的代码以删除所有行,如下所示:
self.catergoryTableView.beginUpdates()
self.catergoryTableView.deleteRows(at: paths, with: .fade)
self.catergoryTableView.endUpdates()
self.arrayOfCategories?.removeAll()
只需将第一行代码添加到最后一行。