在 UICollectionView 中滑动单元格 - Swift

Posted

技术标签:

【中文标题】在 UICollectionView 中滑动单元格 - Swift【英文标题】:Swipe Cell in UICollectionView - Swift 【发布时间】:2015-07-26 10:09:49 【问题描述】:

是否有一种优雅而简短的方法可以在两个单元格之间快速滑动(假设我们有两个单元格的所需 NSIndexPath)?

【问题讨论】:

滑动是什么意思?在集合视图的情况下,我想到了许多对象的集合,而不仅仅是 2。也许您正在寻找或谈论 UIScrollView?多描述一下你的布局。 我的意思是用另一个单元格替换一个单元格,只是将一个单元格位置更改为另一个单元格位置,反之亦然。 【参考方案1】:

根据您提供的信息,我认为这里的可能性很小。

1) 您可以使用标准的 UICollectionView 方法:- moveItemAtIndexPath:toIndexPath:,但您必须先更新您的数据源。例如,假设您已经更新了数据源(请注意,此示例代码在您弄清楚移动项目后的索引更改之前是无用的。):

collectionView.performBatchUpdates( () -> Void in
   collectionView.moveItemAtIndexPath(firstIndexPath,toIndexPath:secondIndexPath)
   //note: proper indexes might be changed after moveItem.. method. Play with it and you'll find the proper one for your item.
   collectionView.moveItemAtIndexPath(secondIndexPath,toIndexPath:firstIndexPath)        
, completion:  (finish) -> Void in

)

2) 如果您使用自定义布局,您可以重新计算布局

3) 您可以使用reloadDatareloadItemsAtIndexPaths 重新加载集合视图,例如:

 var dataSourceArray = [1,2,3,4,5]
 // some event occurred -> dataSourceArray changed
 dataSourceArray = [1,2,5,4,3]
 // call collectionView.reloadData() or reloadItemsAtIndexPaths(_:).

如果您将使用第一种或第三种方式,在这两种情况下,数据源都必须是最新的。

【讨论】:

以上是关于在 UICollectionView 中滑动单元格 - Swift的主要内容,如果未能解决你的问题,请参考以下文章

使用uicollectionview 实现单元格滑动吸附效果

在 UICollectionView 上禁用单元格重用

自定义 UICollectionView 单元格滑动动画

如何向 UICollectionView 动态添加新单元格?

预加载下一个(当前不可见)单元格 UICollectionView

在编辑按钮上删除UICollectionView单元格