UICollectionView 将最后一个单元格设置为一个部分

UICollectionView setting the last cell a section

我目前正在开发一个轮播视图,该视图与具有以下形式的 UICollection 一起使用:

[cell1][cell2][cell3] ... [cell n][ + ]

所以我的 UICollection 只有一个部分。

除最后一个单元格外,每个单元格都有内容。最后一个单元格 (n+1) 内部有一个加号按钮,允许用户在轮播中插入一个新单元格。

我将此代码写入数据源方法 cellForItemAtIndexPath 以了解当前索引路径处的单元格是否为最后一个单元格:

if ([indexPath section] == sectionsAmount - 1 && [indexPath row] == rowsAmount - 1) {
    FormationCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"CellFormation" forIndexPath:indexPath];
    return cell.
}

我的旋转木马的最后一个单元格没问题,但是当我在我的旋转木马中水平滚动时,最后一个单元格也在旋转木马的某个索引处生成,并在滚动过程中替换我的其他单元格。我认为这是可重复使用电池的问题。谁能帮帮我吗?

这就是我想要的:

[cell1][cell2][cell3] ... [cell n][ + ]

初始化轮播后我有:

[cell1][cell2][cell3] ... [cell n][ + ]

没关系,但是当我在旋转木马中滚动时,我遇到了这个错误:

[cell1][ + ][ + ] ... [cell n][ + ]

最后一个细胞在某些位置被克隆。

您应该在您的子单元 class 上覆盖 prepareForReuse 方法,并在那里进行任何配置清理,例如重置 UI 和单元状态。

Docs reference

更新

[+] 单元格使用与 [cell n] 单元格相同的 class 吗? 如果是这样,那么您在重新使用之前没有清除状态(因此,您应该在 prepareForReuse 方法上清除它)。如果是,那么您可能对两者使用了相同的小区标识符。