防止 UICollectionView 中每个 UICollectionViewCell 中的内容在我滚动时发生变化?

Prevent content in each UICollectionViewCell in UICollectionView from changing as I scroll?

当我在 UICollectionView 中来回滚动时,我注意到单元格中的内容在屏幕上出现和消失时发生了变化。

有什么办法可以防止这种情况发生吗? 我只想将所有内容适当地加载到每个单元格,然后防止它在我滚动时发生变化。

下面是一些与此相关的代码:

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

    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cellIdentifier" forIndexPath:indexPath];
    cell.backgroundColor = [UIColor clearColor];

    UILabel *label = (UILabel *)[cell viewWithTag:100];
    if (!label) {
        label = [[UILabel alloc] initWithFrame:cell.bounds];
        label.tag = 100;
        label.text = [self.array objectAtIndex:indexPath.row];
        label.textAlignment = NSTextAlignmentCenter;
        label.textColor = [UIColor blackColor];
        [cell.contentView addSubview:label];
    }

    return cell;
}

问题是您没有在 cellForRowAtIndexPath: 中提供标签的内容。请记住,这些细胞正在 重复使用 。因此,即使标签已经存在,您也需要提供标签文本,因为该单元格现在正在不同的行中使用,因此需要不同的文本!

所以只需移动这一行:

    label.text = [self.array objectAtIndex:indexPath.row];

...在 if 街区之外,就在 return 之前 cell.