我有一个数组,需要单击标题为UIButton的“关闭”按钮来添加和删除单元格数据
我正在循环数组并获取行,对于该节,我使用了静态数据并在
之后附加到indexPaths中tblSideNav.deleteRows(at: indexPaths, with: .fade)
在上述行开始执行应用时发生崩溃
var menusArray = [sideNavStruct(isOpend: true, menuImg: "user", menuTitle: "Profile", subMenu: ["My Profile", "Distributor Profile"]), sideNavStruct(isOpend: true, menuImg: "user", menuTitle: "Reports", subMenu: ["Stock Report", "NFR Report", "RTD”])]
@objc func handleOpenCloseCell() {
let section = 0
var indexPaths = [IndexPath]()
for row in menusArray[section].subMenu.indices {
let indexPath = IndexPath(row: row, section: section)
indexPaths.append(indexPath)
}
print(indexPaths.count)
print(menusArray[section].subMenu[0])
menusArray[section].subMenu[0].removeAll()
tblSideNav.deleteRows(at: indexPaths, with: .fade)
}
我的应用在tblSideNav.deleteRows(at: indexPaths, with: .fade)
上崩溃了:
无效更新:第0节中的无效行数。 更新(7)之后现有部分中包含的行必须是 等于该部分之前包含的行数 更新(2),加上或减去从中插入或删除的行数 该部分(插入0,删除2),加上或减去 行移入或移出该部分(移入0,移出0)。
我找不到问题
答案 0 :(得分:0)
首先,您要调用deleteRows而不需要必需的beginUpdates和endUpdates。
tableView.beginUpdates()
tableView.deleteRows(at: indexPaths, with: .fade)
tableView.endUpdates()
如果您的委托函数在更新后未返回正确的行数,则可能会发生相同的错误。
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return rowCount
}
我认为更好的做法是更改/清空存储行信息/数据的位置的变量,并只需调用reloadData()。