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;
}
我在使用自定义单元格创建 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;
}