在 UICollectionView 中滑动单元格 - Swift
Swipe Cell in UICollectionView - Swift
是否有一种优雅而简短的方法可以在两个单元格之间以编程方式滑动(假设我们有两个单元格的所需 NSIndexPath)?
根据您提供的信息,我在这里看到的可能性很小。
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) 您可以使用 reloadData
或 reloadItemsAtIndexPaths
重新加载集合视图,例如:
var dataSourceArray = [1,2,3,4,5]
// some event occurred -> dataSourceArray changed
dataSourceArray = [1,2,5,4,3]
// call collectionView.reloadData() or reloadItemsAtIndexPaths(_:).
如果您使用第一种或第三种方式,在这两种情况下数据源都必须是最新的。
是否有一种优雅而简短的方法可以在两个单元格之间以编程方式滑动(假设我们有两个单元格的所需 NSIndexPath)?
根据您提供的信息,我在这里看到的可能性很小。
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) 您可以使用 reloadData
或 reloadItemsAtIndexPaths
重新加载集合视图,例如:
var dataSourceArray = [1,2,3,4,5]
// some event occurred -> dataSourceArray changed
dataSourceArray = [1,2,5,4,3]
// call collectionView.reloadData() or reloadItemsAtIndexPaths(_:).
如果您使用第一种或第三种方式,在这两种情况下数据源都必须是最新的。