如何在Swift

时间:2018-08-25 09:10:57

标签: ios swift

我正在编写一个代码,其中必须在选择部分时插入和删除所有行。

下面是用于插入和删除的代码

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行”

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

更新您的代码以删除所有行,如下所示:

self.catergoryTableView.beginUpdates()
self.catergoryTableView.deleteRows(at: paths, with: .fade)
self.catergoryTableView.endUpdates()
self.arrayOfCategories?.removeAll()

只需将第一行代码添加到最后一行。