【问题标题】:How to delete item from UI collection view?如何从 UI 集合视图中删除项目?
【发布时间】:2021-10-07 13:24:26
【问题描述】:

我是 Swift 集合视图的新手,我正在尝试从集合视图中删除一个项目。

目前,我有一个使用集合视图 (ListVC) 的类似表格视图的列表,当用户点击编辑导航栏按钮时,它会变成编辑模式,用户可以选择一个单元格。当一个项目被选中时,我将它的 indexPath.row 存储在一个变量中,稍后当用户从数据源中编辑或删除一个项目时我会使用它,然后呈现另一个视图控制器 (ModalVC) 让用户选择删除或编辑项目。在用户选择删除或编辑项目后,我会呈现带有更新值的类似表视图的列表。 例如,

  1. 用户点击 ListVC 中的“编辑”按钮。
  2. 用户在类似表格视图的集合视图中选择其中一个单元格。 (ListVC)
  3. 呈现 ModalVC 并让用户点击“删除”按钮。
  4. 返回 ListVC 并显示更新的单元格(删除从列表中选择的一个用户)

我在我的项目中添加了 SQLite,并将每个项目存储在数据库中。
所以,起初,当用户删除一个项目时,我只是从 SQLite 数据库中删除一个项目,然后重新加载表,获取项目,然后从头开始设置集合视图。

但问题是每次用户删除或编辑项目时,它都会重新加载整个类似表视图的列表(就像消失列表一会儿,然后显示一个新列表)。

我阅读了一些文档,现在我认为我应该对NSDiffableDataSourceSnapshot 使用 deleteItems 方法。 (虽然不太确定)

我还阅读了文档并搜索了一些在 NSDiffableDataSourceSnapshot 中使用 deleteItems 方法的示例,但我找不到它,感觉我现在完全迷失了。 如果您知道如何在不重新加载整个列表的情况下从集合视图列表中删除项目,请告诉我。

【问题讨论】:

    标签: ios swift uicollectionview collectionview


    【解决方案1】:

    这对你的情况不起作用吗?

    removeItemFromSqlite()
    collectionView.performBatchUpdates({
        collectionView.deleteItems(at: [indexPath])
    }, completion: nil)
    

    即使您决定允许用户选择多个单元格,这也会很有帮助,因此需要删除多个 indexPaths

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-17
      • 1970-01-01
      相关资源
      最近更新 更多