UICollectionView 静态 CustomCell 复用

UICollectionView Static CustomCell reuse

我在使用自定义单元格创建 UICollectionView 以显示项目时遇到问题。但是在 UICollectionView 刷新后,可重用单元填充了错误的索引

刷新前的UICollectionView。

刷新后的UICollectionView。

可重用集合视图单元格的代码示例。

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

    GalleryCollectionCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentifier forIndexPath:indexPath];

    if (indexPath.item != 0)
    {
        [cell setCollectionItem:[collectionData_ objectAtIndex:indexPath.row - 1]];
    }

    return cell;

}

出现此问题是因为单元格将被重复使用。细胞被重复使用以提高系统的性能。如果您的 table 有 1000 个单元格,系统不会分配 1000 个单元格,但会比 reuse-

尝试在 if

中添加 else 子句
if (indexPath.item != 0)
{
    [cell setCollectionItem:[collectionData_ objectAtIndex:indexPath.row - 1]];
}
else
{
   //Set your cell at index 0 with your camera image
   [cell setCollectionItem:@"camera-image"];
}

认为它正在重用另一个单元格(在本例中为气球)并且没有为第一个索引单元格设置任何内容。如果您使用 else 语句来创建新的相机单元格,希望它会重新出现。

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    GalleryCollectionCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentifier forIndexPath:indexPath];

    if (indexPath.item != 0) {
        [cell setCollectionItem:[collectionData_ objectAtIndex:indexPath.row - 1]];
    } else {
        // Set camera item here
    }
    return cell;
}