UITableViewCell如何复用
1.最原始的写法
static NSString *cellName = @"cellNameId";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellName];
if (!cell){
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellName];
}
2.也可以先注册cell,之后,就不用创建了
[mTabl registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cellNameId"];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cellNameId" forIndexPath:indexPath];
这里为了测试具体创建了几个cell,采用第一种方式.
image.png
红色框为tabl的位置
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellName];
if (!cell){
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellName];
//在cell被创建时,输出一下
NSLog(@"+++++++++++++++++++++++++++%zd***%@",indexPath.row,cell);
}
如此设置之后,屏幕上最大可展示的cell为5个
1,设定cell的个数为0
不会创建cell
2,设定cell的个数为3
image.pngcell会被创建3个,每一个cell地址都不一样,创建3次
此时,屏幕上并没有展示全最大
2,设定cell的个数为8
image.png
cell会被创建8个,每一个cell地址都不一样,创建8次
此时,屏幕上已展示全最多的cell
2,设定cell的个数为10
image.pngcell会被创建10个,每一个cell地址都不一样,创建10次
2,设定cell的个数为100
image.png
cell会被创建10个,每一个cell地址都不一样,创建10次
因此,cell存在复用时,tabl并不是仅仅创建屏幕上能展示的cell的最大数.
当cell的个数大于9时,最少创建10个cell,最多创建屏幕能展示下的最大数
当cell的个数小于9时,有几个创建几个.
网友评论