先上图:
想要的效果:
使用注册的复用方式:
ListCell *cell = [tableView dequeueReusableCellWithIdentifier:@"listcell" forIndexPath:indexPath];
介绍一下自定义cell结构
@property (nonatomic) UIView *leftView;
@property (nonatomic) UIImageView *threeLeft;
@property (nonatomic) UIView *fourLeft;
@property (nonatomic) UILabel *fourTitle;
左边显示金银铜牌的地方是leftview,首先使用Leftview站位,写好约束,然后如果是123把threeleft贴上去。显示金银铜牌。如果是4名以后。显示fourleft,也就是灰色圆圈。上面贴着fourTitle。显示数字。
分析一下,复用的时候,可能取出前三的,也可能去取后4的。由于两个view不能完全覆盖。所以出现了显示问题。也就是说多次复用以后。这两个控件都存在cell中。
控制方法如下:
if (indexPath.row == 0) {
cell.fourLeft.hidden = YES;
cell.name.text = @"漫丽依 真丝复古刺绣连衣裙·藏蓝色漫丽依 真丝复古刺绣...";
cell.threeLeft.hidden = NO ;
cell.threeLeft.image = [UIImage imageNamed:@"金牌"];
}else if(indexPath.row == 1){
cell.fourLeft.hidden = YES;
cell.threeLeft.hidden = NO ;
cell.threeLeft.image = [UIImage imageNamed:@"银牌"];
cell.name.text = @"漫丽依 真丝复古刺绣连衣裙·藏蓝色";
}else if(indexPath.row == 2){
cell.fourLeft.hidden = YES;
cell.threeLeft.hidden = NO ;
cell.threeLeft.image = [UIImage imageNamed:@"铜牌"];
cell.name.text = @"漫丽依 真丝复古刺绣连衣裙·藏蓝色";
}else{
cell.name.text = @"漫丽依 真丝复古刺绣连衣裙·藏蓝色";
cell.threeLeft.hidden = YES ;
cell.fourLeft.hidden = NO;
cell.fourTitle.text = @(indexPath.row+1).stringValue;
}
利用控件的隐藏开关控制