记得很早之前遇到过一个问题,关于cell的重叠问题,现在回顾总结一下。
iOS中tableview的cell显示是会消耗内存的,如果要显示无数个cell,不可能把每个cell都存储下来,为了解决这个问题,cell就用了重用机制,tableview中每次显示的cell数是有限的,cell的个数是能显示cell的最大个数,当超过cell能显示的最大个数,则会重用之前创建的cell,这时就出现cell的重叠问题,比如创建了第一个cell,cell里面有一个label,当重用到这个cell,label不现实,则可能出现cell的重叠现象。
解决办法:
1.cell的每个标示符都不一样。虽然解决问题了,但是内存的消耗是巨大的。
NSString *CellIdentifier = [NSString stringWithFormat:@"Cell%d%d", [indexPath section], [indexPath row]];//以indexPath来唯一确定cell
2.删除cell下面所有的子视图。
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
else
{
//删除cell的所有子视图
while ([cell.contentView.subviews lastObject] != nil)
{
[(UIView*)[cell.contentView.subviews lastObject] removeFromSuperview];
}
}
//...其他代码
}
时间: 2024-10-17 22:45:32