UITableViewCell的重用导致|UITableViewCell的重用导致 内容重叠

问题:UITableViewCell的重绘机制导致的列状态问题
环境:XCode4.2,低版本也会出现
场景:自定义UITableViewCell,使用复用cell方法,在UITableView滚动时,内容被覆盖,或者没有被刷新,或者选择时内容覆盖,或者设置cell的背景透明时,内容重叠在一起,或者图片控件出现覆盖,显示不全等问题。

原因:引起这个问题的主要原因是,重用cell。之前cell上的内容未被清空,而又增加新增内容所致。

解决方案:在使用cell时,首先删除cell上的view,代码如下。
【UITableViewCell的重用导致|UITableViewCell的重用导致 内容重叠】
[plain]view plain copy

  1. static NSString *identifier = @"Fanmeli";
  2. UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
  3. if (!cell) {
  4. //cell = [[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:identifier];
  5. cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
  6. }else{
  7. // 删除cell中的子对象,刷新覆盖问题。
  8. while ([cell.contentView.subviews lastObject] != nil) {
  9. [(UIView*)[cell.contentView.subviews lastObject] removeFromSuperview];
  10. }
  11. }
  12. // 增加新内容
  13. ....

    推荐阅读