我没有使用故事板,一切都是通过代码完成的.. 当我滚动UICollectionView ..它正确地重复使用..一些单元格.. 比它发生的那样:
- 正在调用单元格initWithFrame
- 我的头上出现了新的白发。
我读了其他的q / a并检查它可能是线程的东西,但所有reloadData都在主线程上。
任何方向?
答案 0 :(得分:0)
我不知道你的代码是什么,所以我建议我该怎么做:
// somewhere in eg viewDidLoad
[self.collectionView setDelegate:self];
[self.collectionView setDataSource:self];
[self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:CellId];
后来代表:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
UICollectionViewCell *cell = cell = [collectionView dequeueReusableCellWithReuseIdentifier:MyCellId forIndexPath:indexPath];
// do something with your cell, set title or anything
return cell;
}
还有另一种可能性。您的单元格可以重复使用,它已经保存了以前的属性。所以如果你做了这样的事情:
if (iCanAddGrayHair) {
[cell.imageView setImage:[UIImage imageNamed:@"hair"]]
}
然后注意,新单元格仍然会设置此图像!你需要添加:
else {
[cell.imageView setImage:nil];
}
将其从之前的状态重置。您还可以覆盖prepareForReuse:
类的UICollectionViewCell
方法来重置值(不要忘记调用super)。