UICollectionViewDropDelegate和DiffableDataSource

问题描述 投票:0回答:1

我正在尝试使用DiffableDataSource(在iOS 13中引入)实现UICollectionViewDropDelegate

  • 我实现了UICollectionViewDragDelegate,效果很好。
  • 我设置了collectionView.dropDelegate = self
  • 我实现了func collectionView(_ collectionView: UICollectionView, performDropWith coordinator: UICollectionViewDropCoordinator)(您甚至可以在方法为空的情况下尝试使用它。)]
  • 该应用将构建并运行,但是一旦您开始拖动单元格,该应用就会立即崩溃并显示以下消息:

由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'当充当UICollectionView的dataSource时,必须通过UICollectionViewDiffableDataSource API来更新UICollectionView:请不要直接在UICollectionView上调用变异API。

所以似乎此方法试图直接修改UICollectionView(也许是在移动项目时移动单元格?),我不知道如何绕过此行为。

想法?

我正在尝试使用DiffableDataSource(在iOS 13中引入)实现UICollectionViewDropDelegate。我已经实现了UICollectionViewDragDelegate,效果很好。我设置了collectionView。...

ios swift datasource
1个回答
0
投票

这是一个很容易解决的问题。从UICollectionViewDropDelegate函数performDropWith开始。请注意,我只需要一个.move而不需要.copy,但是您只需要添加一个类似于以下reorderItems()方法的copyItems()方法即可:

© www.soinside.com 2019 - 2024. All rights reserved.