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];

}

}

//...其他代码

}

时间: 2024-10-17 22:45:32

iOS-关于cell的重叠问题的相关文章

iOS tableview cell 的展开收缩

iOS tableview cell 的展开收缩 #import "ViewController.h" @interface ViewController ()<UITableViewDataSource,UITableViewDelegate>{ NSMutableArray *_allArray;//创建一个数据源数组 NSMutableDictionary *dic;//创建一个字典进行判断收缩还是展开 } @property (nonatomic,strong)UI

[IOS Tableview] cell自定义view显示错误问题

问题介绍:按照tableviewcell的tag自定义cell的view显示的时候,会出现拖动时显示错误情况. 我做的是一个下载界面,我为了简化问题,就把问题设定为,tag==1的cell已下载,加载时就把已下载的cell的label显示为蓝色.其余默认为黑. 比如我在代码里,想要tag==1的cell的label字体为蓝色,这样写就会出现上下拖动时tag==11的也出现蓝色(视具体情况而定). if([cell.tag==1){ //tag==1就把label显示为蓝色 cell.label.

iOS 自定义cell的高度

在iOS开发过程中,最重要的几个UIView分别为UITableView.UIScrollView.UICollection.今天由小白哥带大家认识一下UItableVIew 首先,建立一个Model类: #import <Foundation/Foundation.h> @interface News : NSObject @property (nonatomic,retain) NSString *title; @property (nonatomic,retain) NSString *

2015 IOS 自定义cell成绩单——在蓝懿教育 学习笔记

1.sb中添加一个tv,箭头,Cell,创建tvc并关联 2.建立Student对象,在.h中建立字符串name,语数英: 3.在tvc创建数组,学生的对象, 初始化, 获取字符串和内容(txt 的文件) 分割字符串 遍历拿到每一行,拿到每一行再分割 每一行都要创建一个student, 每个学生的姓名 语数英分数 把创建好的学生对象添加到数组 4.行数,内容, 取出每行学生对象, 然后cell,textlabel.text  = .. 此时名称显示出来 5.创建tableviewCell 关联s

iOS中cell的重用

如果有cell的重用 那么就会跳过if语句中的创建过程 当拖动页面,最上面的cell消失,出现新的cell的时候 就会在缓存区存放刚才消失的cell,而属性会重新设置,为什么? 因为缓存区中存放的cell的属性是消失的cell的,他的属性如果不符合新的cell就需要重新分配属性, 一有新的cell出现,就会替换旧的位置,数量总保持在界面上显示的cell数量,不会增加也不会减少,这样就减轻了内存的压力

iOS ?自定义cell的步骤

?自定义cell的步骤(每个cell的?高度不?一样,每个cell?里?面显?示的 内容也不?一样) 新建?一个继承?自UITableViewCell的?子类 2. 在initWithStyle:方法中进行?控件的初始化 1> 将有可能显?示的所有?子控件都添加到contentView中 2> 顺便设置?子控件的?一些属性(?一次性的设置:字体.?文字颜?色. 背景 3. 提供2个模型 1> ?一个是数据模型(?文字数据 + 图?片数据) 2> ?一个是frame模型(数据模型 +

IOS 根据cell内容设置cell的高度

这里要涉及到tableview 的两个方法 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 和 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 我们要清楚这两个方法的调用顺序,先heightForRo

iOS-cell的重用机制

对于像我们这样的初学者来说,cell重用机制是很难理解的内容,所以我们不一定非得理解,会用就行. cell的重用机制:当我们使用tableView时,系统只会创建屏幕中显示的cell的个数+1,当cell滑出可视范围时,会将此cell放出重用池,当有新的cell滑进可视范围时,先到重用池里去找,找不到就创建,找得到就直接用,所以会用串(有时候不会串<cell的个数小于3>) 防止用串的方法:1.设置标签2.不用重用池,直接创建3.拿出来用之前,清空原内容 一.设置标签(这是最常用的) cell

iOS中Cell高度如何能够自动适应需要显示的内容

本文的代码例子 : "Cell行高自适应.zip" http://vdisk.weibo.com/s/Gb9Mt 下面我们来看看代码.我需要一个第三方库EGO异步下载.addtion文件夹和StringUtil文件以及Comment.Status.User这三个数据模型,这篇文章的主要目的是讲解如何计算Cell的高度,jSON数据分类见上面那篇文章,上面说的在代码例子中都有的.将它们考入你的工程. 实现思路: /* File.strings Cell行高自适应 Created by 杜