这两天做ios遇到一个UITableViewCell 数据重合的问题,原因:引起这个问题的主要原因是,重用cell。之前cell上的内容未被清空,而又增加新增内容所致。从网上查了一些解决方法,比如:
解决方案:在使用cell时,首先删除cell上的view,代码如下。
static NSString *identifier = @"Fanmeli";
UITableViewCell *cell =
[tableView dequeueReusableCellWithIdentifier:identifier];
if (!cell)
{
//cell = [[UITableViewCell alloc] initWithFrame:CGRectZero
reuseIdentifier:identifier];
cell = [[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
}else{
// 删除cell中的子对象,刷新覆盖问题。
while ([cell.contentView.subviews
lastObject] != nil) {
[(UIView*)[cell.contentView.subviews
lastObject] removeFromSuperview];
}
}
除了以上方法还有就是不让cell去复用,当然这种方式尽量避免,上面的方案试了一下没有起作用,不过也给我我启发,既然是cell复用,内容没有清空,那就再清空一下再赋值
1
2
3
4
5
|
if
(cell == nil ) {
cell = [[SystemNoticeTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellTableIdentifier];
} else {
[cell clearCell ];
}
|
成功解决这种问题。