iOS-关于cell的重叠问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS-关于cell的重叠问题相关的知识,希望对你有一定的参考价值。
记得很早之前遇到过一个问题,关于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];
}
}
//...其他代码
}
以上是关于iOS-关于cell的重叠问题的主要内容,如果未能解决你的问题,请参考以下文章
关于重叠IO(overlapped)模型中完成例程使用的两点疑问