最新消息:文章中包含代码时,请遵守代码高亮规范!

iOS复用可变数组里的cell【转载】

iOS 李, 永奎 405浏览 0评论

常见的返回UITableViewCell的代理方法:
– (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellID = @”cellID”;//1.创建静态的cellID标识符

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];//2.根据标识符从队列中取cell
if (!cell) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID];//3.如果没取到,就创建新的cell
}

cell.textLabel.text = [NSString stringWithFormat:@”%ld”,indexPath.row];//4.使用cell

return cell;
}

这种方法的好处是不需要创建所有的cell,节省内存。
下面说一种不复用cell的方法:
1.声明一个成员变量NSMutableArray *cells;
2.创建UITableView;
3.cell的代理方法:
– (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
return cells[indexPath.row];//直接返回数组中的cell
}

4.初始化数据:
cells = [NSMutableArray array];
for (int i = 0; i < 20; i++) {
UITableViewCell *cell = [[UITableViewCell alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];//可自定义cell类
cell.textLabel.text = [NSString stringWithFormat:@"%d",i];//对控件的属性赋值
[cells addObject:cell];//将cell加到数组中
}

这种写法的优点复用可变数组里的cell,在滚动tableView时,cell上的输入框值不会置空,cell上的倒计时也不会错乱,缺点是要把tableView里所有行的cell创建出来,占用内存较大,不适用于条数过大的列表。

转载时请注明出处及相应链接,本文永久地址:https://blog.yayuanzi.com/23116.html


pay_weixin
pay_weixin
微信打赏
pay_weixin
支付宝打赏
感谢您对作者Future的打赏,我们会更加努力!    如果您想成为作者,请点我

您必须 登录 才能发表评论!