在UICollectionView中滑动单元格 - Swift

时间:2015-07-26 10:09:49

标签: swift uicollectionview uicollectionviewcell nsindexpath

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

1 个答案:

答案 0 :(得分:2)

我在这里看到的可能性很少,有你提供的信息。

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(_:).

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