删除UITableView Swift 3中的行

时间:2016-09-22 14:48:20

标签: ios uitableview swift3

好的我正在创建一个应用程序,您可以将项目添加到购物车,并在添加时更新。我做的所有添加罚款,但我不能删除工作。在购物车单元格中,我需要从3个数组中删除,但这似乎不是问题,因为我不断收到此错误:

  

"由于未捕获的异常终止应用程序' NSInternalInconsistencyException',原因:'无效更新:第0部分中的行数无效。现有部分中包含的行数update(1)必须等于更新(1)之前该部分中包含的行数,加上或减去从该部分插入或删除的行数(0插入,1删除)和加或减数字移入或移出该部分的行(0移入,0移出)。'"

我不确定我在这里做错了什么。我已经遵循了一些教程,他们似乎都在做同样的事情。任何帮助表示感谢提前。

这是我的一些代码:

//declaring arrays to show in cell
var cartKeys = [String]()
var cartValues = [String]()

var deets = [[String]]()
var count = 0


//populating arrays from original arrays 
func populateCart(){

    for (key,value) in MenuStore.shared.cart {

        self.cartKeys.append(key)
        self.cartValues.append(value)
    }


    for i in MenuStore.shared.cartAndItems{
        for (k,v) in i {
            deets.append(v)
        }
    }

    print("DEETS \(deets)")

    for c in cartView.visibleCells {

        count += 1

    }

}


func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {

    switch tableView{

    case cartView:
        if editingStyle == .delete{
            let index = indexPath.row
            print(index)

            cartKeys.remove(at: index)
            cartValues.remove(at: index)

            deets.remove(at: index)


            tableView.deleteRows(at: [indexPath], with: .automatic)

        }


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    switch tableView{

    case cartView:
        let cartCell = tableView.dequeueReusableCell(withIdentifier: "cartCell", for: indexPath) as? CartCell


        cartCell?.cartTitle.text = cartKeys[(indexPath as NSIndexPath).row]
        cartCell?.cartPrice.text = cartValues[(indexPath as NSIndexPath).row]
        cartCell?.cartDetails.text = deets[count].joined(separator: ", ")



        return cartCell!

PS。如果有人想要帮助更换可见细胞,那就更好了。 id喜欢循环遍历所有单元格,即使它们在屏幕上不可见。

0 个答案:

没有答案