滚动UICollectionView时会加载重复数据

时间:2015-11-26 13:43:47

标签: ios objective-c uicollectionview

您好我是iOS的初学者,在我的项目中,我已经以编程方式创建了255-f,确定它正常运行。

但是我的问题是当我滚动UICollectionView正在加载重复数据时,如下面的屏幕所示。

我在这做错了什么?

为什么在滚动CollectionView时会加载重复数据?

请帮帮我。

我的代码: -

CollectionView

enter image description here

2 个答案:

答案 0 :(得分:6)

- >将此代码放在创建UIImageView对象的行上方

for (id subview in cell.contentView.subviews) {
    if ([subview isKindOfClass:[UIImageView class]]) {
        [subview removeFromSuperview];
    } else if ([subview isKindOfClass:[UILabel class]]) {
        [subview removeFromSuperview];
    }
}
  • 它将删除UILabel和UIImageView类型的内容视图的子视图。

使用标签:

根据您的代码向视图添加标记 对于UIImageView

self.image.tag = 101;

表示UILabel

 self.NameLabel.tag = 102;

使用标记

删除视图
//remove image view
UIView *view = [cell.contentView viewWithTag:101];
[view removeFromSuperview];

//remove label
view = [cell.contentView viewWithTag:101];
[view removeFromSuperview];

答案 1 :(得分:2)

if (cell == nil)条件内移动您的单元格子视图。

if (cell == nil) {
    cell=[collectionView dequeueReusableCellWithReuseIdentifier:@"cellIdentifier" forIndexPath:indexPath];
    UIImageView *image =[[UIImageView alloc]init];
   [cell.contentView addSubview:image];

   UILabel * NameLabel = [[UILabel alloc]init];
   NameLabel.textColor = [UIColor blackColor];
   NameLabel.font = [UIFont systemFontOfSize:15.0];
   [cell.contentView addSubview:NameLabel];

   [image mas_makeConstraints:^(MASConstraintMaker *make) {
       make.centerX.equalTo(cell.contentView);
       make.centerY.equalTo(cell.contentView);
       make.width.equalTo(@40);
       make.height.equalTo(@40);
   }];

   [NameLabel mas_makeConstraints:^(MASConstraintMaker *make) {
       make.top.equalTo(image).offset(35);
       make.left.equalTo(@5);
       make.width.equalTo(@80);
       make.height.equalTo(@40);
   }];
}

image.image=[UIImage imageNamed:[images objectAtIndex:indexPath.row]];
NameLabel.text = [description objectAtIndex:indexPath.row];

如果你把创作放在它之外,每次重复使用它时都会重新绘制它。