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 和单元状态。
更新
[+] 单元格使用与 [cell n] 单元格相同的 class 吗?
如果是这样,那么您在重新使用之前没有清除状态(因此,您应该在 prepareForReuse
方法上清除它)。如果是,那么您可能对两者使用了相同的小区标识符。
我目前正在开发一个轮播视图,该视图与具有以下形式的 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 和单元状态。
更新
[+] 单元格使用与 [cell n] 单元格相同的 class 吗?
如果是这样,那么您在重新使用之前没有清除状态(因此,您应该在 prepareForReuse
方法上清除它)。如果是,那么您可能对两者使用了相同的小区标识符。