我有一个UICollectionViewController和我的自定义单元格,在我的cellForRowAtIndexPath:方法中,我根据indexPath.row设置了单元格。 但是我得到了错误的结果,这个单元格甚至在第一个位置后出现,如果你来回滚动,它会随机出现。我该如何解决这个问题?
以下是代码:
-(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;
}
答案 0 :(得分:4)
UITableView和UICollectionView中的Cell都被回收,这意味着当一个人离开屏幕时,它会被放入NSSet,直到你再次需要它为止。如果需要,它会从UICollectionView视图层次结构中再次添加的设置广告中删除。如果不清除单元格内的值或再次设置它们,则单元格在创建时将显示相同的数据。
这是出于性能原因而创建单元需要更多时间而不是重新评估它们
如果您的问题在布局中,请检查布局流对象,您设置了哪个大小?
答案 1 :(得分:1)
我发现了问题,一旦设置了单元格内容,就永远不会清理它。所以我添加了清理每个单元属性作为附加子句,它工作正常。
答案 2 :(得分:1)
如果在自定义单元格实现中覆盖prepareForReuse
,则可以执行任何必要的清理以准备要再次使用的视图。
答案 3 :(得分:0)
this SO post中的一个答案有所帮助:覆盖prepareForReuse
并将单元格重置为默认状态。别忘了给super.prepareForReuse
打电话。