从表格视图中删除后动态删除节

时间:2019-10-17 03:24:34

标签: tableview swift5 sections

我正在清理我的表视图。我添加项目并通过Realm对象存储它们。每个项目都有一个类别,这些类别是我的表格视图中的部分。类别会随着项目的添加而更新,并且如果添加了新类别,它将在表视图中显示为一部分。一切正常。

但是,删除是一个问题。当用户滑动以删除节中的最后一项时,我也希望删除节标题。这是我用来管理删除(通过SwipeCellKit)的代码:

func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath, for orientation: SwipeActionsOrientation) -> [SwipeAction]? {
        guard orientation == .right else { return nil }

        let deleteAction = SwipeAction(style: .destructive, title: "Delete") { action, indexPath in
            //remove from
            self.updateModel(at: indexPath)

        }
        deleteAction.image = UIImage(named: "delete-icon")
        return [deleteAction]
    }

updateModel()函数从Realm中删除该项目。

我有一个函数也可以重新计算类别:

func loadCategories() {
        let localCat = try! Realm().objects(Items.self).filter("list_id = '\(list_id)'").distinct(by: ["item_category"])
        var localCatArr : [String] = []
        for cat in (localCat) {
            localCatArr.append(cat.item_category)
        }
        categories = localCatArr
        if categories.count == 0 {
            categories.append("New List")
        }

    }

还有一个用于在items数组中重新加载数据的函数(该函数还尝试重新加载表视图):

func loadItems() {
        itemsList = try! Realm().objects(Items.self).filter("list_id = '\(list_id)'").sorted(byKeyPath: "item_category")

        loadCategories()
        tableView.reloadData()

    }

在完成处理程序中,我尝试调用此函数和tableView.reloadData,但是在以下方面出现错误:

由于未捕获的异常“ NSInternalInconsistencyException”而终止应用程序,原因:“试图从第2节中删除第0行,但更新前只有2个节”

我认为我需要再次调用numberOfSections()并重新构建事物,但无法弄清楚如何在不崩溃的情况下实现这一点。我的思路是否正确,对如何更新此方法有何建议?

0 个答案:

没有答案