您好我是iOS的初学者,在我的项目中,我已经以编程方式创建了255-f
,确定它正常运行。
但是我的问题是当我滚动UICollectionView
正在加载重复数据时,如下面的屏幕所示。
我在这做错了什么?
为什么在滚动CollectionView时会加载重复数据?
请帮帮我。
CollectionView
答案 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];
}
}
使用标签:
根据您的代码向视图添加标记 对于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];
如果你把创作放在它之外,每次重复使用它时都会重新绘制它。