无法在UITableView中的某个部分添加行

时间:2017-01-25 03:37:00

标签: swift uitableview insert swift3 row

我的自定义单元格中有一个收藏夹按钮。在tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)中,只要单击“收藏夹”按钮,我就会设置一个监听器。现在,我有两个部分。第0部分是所有食品,第1部分是最受欢迎的。当我到达endUpdates()时,应用程序崩溃并出现NSInternalInconsistencyException异常。永远不会在tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)内调用addFavorites函数。 favoriteFoods已初始化,我从未在代码中的任何其他位置调用beginUpdatesendUpdates

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删除)。'

2 个答案:

答案 0 :(得分:0)

您要将新行添加到名为favorites的数组中,但numberOfRowsInSection正在返回名为favoriteFoods的数组的计数

答案 1 :(得分:0)

我需要在开始和结束更新之间添加companyTableView.insertSections([1], with: .automatic),因为没有预先存在的部分。