当我对CollectionView执行ReloadData时遇到问题。
事情是,我做了一个非常小的项目,以向您展示正在发生的事情。
(CollectionView将更改单元格编号2的颜色背景。但是当您执行ReloadData时,许多单元格已更改..)
您可以在此处找到我的项目:https://www.dropbox.com/s/yy7uen60rc292ir/collectionViewTest.zip?dl=0
解决!
感谢您的帮助!,我需要添加函数PrepareForReuse()
,我可以在重新使用之前“清理”我的细胞。
答案 0 :(得分:1)
reloadData()
重新加载collectionView的整个数据源。如果您只想更新几个单元格,请查看beginUpdates()
和endUpdates()
。在这里,您将插入或删除行。如果您正在使用Core Data,那么请考虑使用NSFetchedResultsController
,因为这样可以简化整个过程并在数据更改时创建流畅的动画。
当您使用dequeueReusableCellWithIdentifier
时,您正在重复使用这些单元格。因此,如果您更改一个背景颜色然后重复使用它,您将在重新加载表时看到不一致的更改。确保在所有单元格上设置背景颜色,否则您将体验到这一点。
var cell = tableView.dequeueReusableCellWithIdentifier("SomeCell") as! UICollectionViewCell
// This would alternate the colors just to show you what I mean
indexPath.row % 2 == 0 ? (cell.backgroundColor = UIColor.whiteColor()) : (cell.backgroundColor = UIColor.blackColor())