码迷,mamicode.com
首页 > 其他好文 > 详细

关于表格CELL重用dequeueReusableCellWithIdentifier

时间:2015-06-05 13:48:02      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:

最近一直因为这个问题困扰着我,经过到处询问以及查询,终于弄明白些了,下面希望跟大家分享一下。
static NSString *CellTableIdentifier = @"CellTableIdentifier ";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:
CellTableIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellTableIdentifier] autorelease];
}

首 先,先说一下重用是如何实现的,我们有一个很长的tableview,假设是100行,但在我们设计的行高情况下,屏幕只能显示10行,所以,当加载 view的时候,实际只创建这10个cell,当我们用手指向上滑动即下方的第11个cell向上滑进界面的过程中,我们发现第一行的cell会滑出界 面,当滑出后,第一行这个cell会被放到重用队列中,第11行将获得重用队列中的一个cell,这样,可以很好的控制内存。

在 这段代码中 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellTableIdentifier]; 意思是定义一个cell,在tableview中的可重用队列中寻找有CellTableIdentifier标识的UITableViewCell,以 进行重用。这个Identifier可以由我们自由定义成一些字符串。当然,如果在队列中有这样的UITableViewCell,那么则返回它给 cell,若没有,则返回nil给cell。因为我们在写程序时经常需要用到好几个表格,每个表格中的cell布局都不一样,所以我们需要将在同一个表格 的cell(布局一样)进行标记Identifier,这样,在重用的时候可以得到匹配的cell。

这 时,就是下面的if语句了,若返回的是nil,即cell==nil,则我们需要分配空间并初始化一个cell,而且需要关联 reuseIdentifier,以便后面重用的时候能够根据Identifier找到这个cell,若cell不为nil,则重用成功,并可 return此cell。

当然,有些朋友说在重用的过程中,经常会有cell重叠的情况发生,这个很容易理解,因为cell滑出界面后并被放到重用队列时,cell中的内容并不会消失,我们可以通过多种方式解决,在此我主要是说明重用的机制,大家有这方面的问题可以在网上找一下解决方法。

这是我以前遇到的问题,那时候想既然书上是说这样做是用来重用的,那个identity就是他的ID啦,是根据ID来进行重用,那么ID就不能相同了,书在这方面都写得很笼统,一句就带过了。

关于表格CELL重用dequeueReusableCellWithIdentifier

标签:

原文地址:http://www.cnblogs.com/huangzs/p/4554344.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!