更多iOS 学习知识,总结尽在 的墨科技:
传送门
当用到cell重用时 会出现以下问题:只要cell重用了,内容就会覆盖叠加
当cell重用时,就出现了以上问题,叠加
解决办法
一、使用Xib, 进行cell的关联
在controller里注册xib
[_listTableView registerNib:[UINib nibWithNibName:@”InformationCell” bundle:nil] forCellReuseIdentifier:@”Infor”];
– (InformationCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString * cellIndentifier = @”Infor”;
InformationCell *cell = (InformationCell*)[tableView dequeueReusableCellWithIdentifier:cellIndentifier forIndexPath:indexPath];
if ( cell == nil ) {
cell = [[InformationCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIndentifier];
cell.backgroundColor = [UIColor clearColor];
cell.contentView.backgroundColor = [UIColor clearColor];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
MessageModel * model = [_messArray objectAtIndex:indexPath.row];
if ( [model isKindOfClass:[MessageModel class]] ) {
[cell loadData:model];
}
return cell;
}
二、使用cell纯代码,注册cell
[_listTableView registerClass:[ActivityTableViewCell class] forCellReuseIdentifier:@”activityCell”]; //
activityCell 自定义的名称
– (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
ActivityTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@”activityCell”];
if (!cell) {
cell = [[ActivityTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@”activityCell”];
}
ActivityModel *model = [_array objectAtIndex:indexPath.section];
cell.activityModel = model;
cell.selectionStyle=UITableViewCellSelectionStyleNone;
return cell;
}
关键的一步
cell.m进行创建UILayout时,初始化cell
– (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
[self createActivityUI];
}
return self;
}
//- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
// [super setSelected:selected animated:animated];
//
// [self createActivityUI];
//}
应该使用未注释的代码,进行创建,会正常显示
如果使用了注释的代码,即会产生cell的重用叠加错误