2013-06-29 73 views
4

我有一个UICollectionViewController和我的自定义单元格,并在我的cellForRowAtIndexPath:方法我设置单元格基于indexPath.row。 但是我得到了错误的结果,这个单元格即使在第一个位置出现,如果你来回滚动,它会随机弹出。我如何解决这个问题?UICollectionViewController - 有时显示错误单元格,在快速滚动

下面是代码:

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    DVGCollectionViewCell *cell; 

    cell = [self.collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath]; 

    if (indexPath.row == 0) 
    { 
     cell.imageView.image = [UIImage imageNamed:@"something1.png"]; 
     cell.buyLabel.text = @"170"; 
     cell.textLabel.text = @"11.2011"; 
    } 

    return cell; 
} 

回答

1

我已经找到了问题,一旦单元格的内容设置这是从来没有清洗。所以我添加清理每个单元属性作为附加子句,它工作正常。

4

UITableView和UICollectionView中的单元都被回收,这意味着当一个屏幕关闭时,它将被放入NSSet中,直到您再次需要为止。在需要时,它将从在UICollectionView视图层次结构中添加的设置广告中移除。如果您不清除单元格内的值或再次设置它们,则单元格在创建时将显示相同的数据。
这是出于性能的原因,创建单元格需要更多的时间,而不是价值再次。
如果你的问题是在布局中检查布局流对象,你设置了什么大小?

1

如果您在自定义单元实现中覆盖了prepareForReuse,则可以执行必要的清理操作以准备视图以供再次使用。

0

this SO post的答案之一帮助:覆盖prepareForReuse并重置单元格为其默认状态。不要忘记拨打super.prepareForReuse

相关问题