我试图在数据源数组排序时显示UICollectionView中的单元格移动到位。我做了以下尝试,由于某种原因,即使排序本身正确完成,单元格也会移动到不正确的位置。我知道,因为我之后可以触发一个简单的reloadData()
,并且单元格将以正确的顺序显示(当然没有移动的动画)。我的逻辑如下,apples
是数据源数组:
let sortedApples = apples.sort({$0.tastiness < $1.tastiness})
let sortMap = apples.map({sortedApples.indexOf($0)!})
self.CollectionView.performBatchUpdates(
{
for i in 0 ..< sortMap.count
{
if i != sortMap[i]
{
self.CollectionView.moveItemAtIndexPath(NSIndexPath.init(forItem: i, inSection: 0), toIndexPath: NSIndexPath.init(forItem: sortMap[i], inSection: 0))
}
}
},
completion:
{ finished in
//apples = sortedApples
})
apples = sortedApples //tried this in the completion block too but that also didn't work
有人可以弄清楚我做错了什么吗?或者,如果有另一个可行的解决方案,只要它可以适用于可变的单元格高度,它也会有所帮助。
谢谢!