2014-03-13 71 views
1

我在其中一个项目中使用了UICollectionView,并且当我尝试在集合视图上调用reloadData时,单元格顺序始终改变相同。
创建细胞类似的东西:UICollectionView reloadData更改单元格顺序

- (UICollectionViewCell *)collectionView:(UICollectionView *)aCollectionView 
        cellForItemAtIndexPath:(NSIndexPath *)aIndexPath { 
    PPhotoCVCell *cell = 
    [self._collectionView dequeueReusableCellWithReuseIdentifier:@"PPhotoCVCell" 
                forIndexPath:aIndexPath]; 
    if (cell.photo == nil) { 
     PPhoto *photo = self._photos[aIndexPath.row]; 
     cell.photo = photo; 
    } 

    cell.enableEditing = self._editing; 
    cell.layer.shouldRasterize = YES; 
    cell.layer.rasterizationScale = [UIScreen mainScreen].scale; 

    return cell; 
} 

如果电池是由用户选择的单元具有类UIImageView,一个用于图像和另一个用于叠加的两个子视图。
当我处于编辑模式时,用户可以选择单元格。当选择了某些单元格并且用户退出了编辑模式时,我在覆盖的setSelected:方法中将覆盖图像视图的alpha值设置为0.0
问题是,当我在集合视图上调用reloadData方法时,所选单元格中的叠加图像视图隐藏而没有动画,但在其他单元格中叠加图像视图显示时没有动画,并使用正确的动画消失。
当我拨打reloadData时,我发现照片的图像视图也发生了变化。

有没有解决这个问题的方法?

+0

您好,请指出您的代码是否正是您面临的问题。 – Javid

回答

2

这听起来像你的细胞正在回收。在您的手机的prepareForReuse中,请确保您正在移除覆盖图。然后根据需要在collectionView: cellForItemAtIndexPath:中添加叠加层。

相关问题