UICollectionView和UITableView重新加载会导致单元格重新排序

时间:2016-01-17 01:01:55

标签: ios swift uicollectionview uicollectionviewcell

我遇到一个线程从服务器获取新模型的情况,我尝试重新加载UICollectionViewController中的所有单元格。

我打电话给collectionView.reloadData()(在主线程上),突然所有的细胞都在改变它们的位置(意思是,我可以看到细胞的内容从一个细胞改变到另一个细胞)

以下无效:

  1. 将数据源排序为相同的顺序
  2. 将单元格保存在自定义词典中,并将数据重新匹配到单元格
  3. self.collectionView!.reloadItemsAtIndexPaths(indexPaths)其中indexPaths包含所有当前路径
  4. 仅使用self.collectionView!.visibleCells()
  5. 重新加载可见细胞

    我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

如果服务器返回正确的有序数据,我担心你没有清理单元格中的数据。当你没有加载图像数据或者没有图像时,你应该将imageView.image设置为nil数据。 如果您在UITableViewDataSource中自定义了单元格,则应该执行以下操作:

if(data.image != nil) {
    imageView.image = data.image;
} else {
    imageView.image = nil;
}

如果您在自定义表格视图单元格类中执行此操作,请执行以下操作:

-(void)prepareForReuse {
    imageView.image = nil 
}