UICollectionView不会在ios 8和ipad air 1上重复使用cell

时间:2015-06-18 16:13:12

标签: ios uicollectionview uicollectionviewcell

我没有使用故事板,一切都是通过代码完成的.. 当我滚动UICollectionView ..它正确地重复使用..一些单元格.. 比它发生的那样:

- 正在调用单元格initWithFrame

- 我的头上出现了新的白发。

我读了其他的q / a并检查它可能是线程的东西,但所有reloadData都在主线程上。

任何方向?

1 个答案:

答案 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)。