这里,先说一下重用是如何实现的,加入我们有一个很长的tableview,假设是100行,但在我们设计的行高情况下,屏幕 只能显示4行,所以,当加载view的时候,实际我们需要创建5各cell,只这4个cell是静态显示,当我们用手指向上滑动即下方的第5个cell向上滑进界面的过程中,我们发现第一行的cell会滑出界面,当滑出后,第一行这个cell对象会被放到对应重用标示符重用队列中,第5行显示在屏幕上。当我继续向上滑动,第二行的cell对象同样会放在重用队列中,第6个cell将获得重用队列中的一个cell,这样,这样在后面的重用中就就可以正常的工作起来了,可以很好的控制内存。
方式有两种
第一种:
static NSString *CellTableIdentifier = @"CellTableIdentifier ";//是重用标示符
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:
CellTableIdentifier];//意思是定义一个cell,在tableview中的可重用队列中寻找有CellTableIdentifier标识的UITableViewCell,以进行重用
if (cell == nil) {
cell = [[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellTableIdentifier];
//若返回的是nil,即cell==nil,则我们需要分配空间并初始化一个cell,而且需 要关联reuseIdentifier,以便后面重用的时候能够根据Identifier找到这个cell,若cell不为nil,则重用成功,并可 return此cell
}
第二种更为简单:
先注册一下cell
[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"];
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
return cell;
}