我的自定义单元格中有一个收藏夹按钮。在tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)
中,只要单击“收藏夹”按钮,我就会设置一个监听器。现在,我有两个部分。第0部分是所有食品,第1部分是最受欢迎的。当我到达endUpdates()时,应用程序崩溃并出现NSInternalInconsistencyException
异常。永远不会在tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)
内调用addFavorites
函数。 favoriteFoods
已初始化,我从未在代码中的任何其他位置调用beginUpdates
和endUpdates
。
func addFavorites(sender: UIButton) {
let touchPoint = sender.convert(CGPoint(x: 0, y: 0), to: companyTableView)
let indexPath = companyTableView.indexPathForRow(at: touchPoint)
favorites.append(allFood[(indexPath?.row)!])
tableView.beginUpdates()
tableView.insertRows(at: [IndexPath(row: favoriteFoods.count - 1, section: 1)], with: .automatic)
tableView.endUpdates()
}
func tableView(_ tableView: UITableView, numberOfRowsInSection
section: Int) -> Int {
if (section == 0) {
return allFood.count
} else {
return favorites.count
}
}
断言失败 - [UITableView _endCellAnimationsWithContext:],/ BuildRoot / Library / Cache / com.apple.xbs / Source / UIKit_Sim / UIKit-3600.6.21 / UITableView.m:1594
由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无效更新:第1节中的行数无效。更新后的表视图中包含的节数(2)必须等于节数包含在更新前的表视图中(1),加上或减去插入或删除的部分数(0插入,0删除)。'
答案 0 :(得分:0)
您要将新行添加到名为favorites
的数组中,但numberOfRowsInSection
正在返回名为favoriteFoods
的数组的计数
答案 1 :(得分:0)
我需要在开始和结束更新之间添加companyTableView.insertSections([1], with: .automatic)
,因为没有预先存在的部分。