UITableViewCell重用和性能优化
2015-06-05 22:27
597 查看
Cell的循环利用方式1
/** * 什么时候调用:每当有一个cell进入视野范围内就会调用 */ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { // 0.重用标识 // 被static修饰的局部变量:只会初始化一次,在整个程序运行过程中,只有一份内存 static NSString *ID = @"cell"; // 1.先根据cell的标识去缓存池中查找可循环利用的cell UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID]; // 2.如果cell为nil(缓存池找不到对应的cell) if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID]; } // 3.覆盖数据 cell.textLabel.text = [NSString stringWithFormat:@"testdata - %zd", indexPath.row]; return cell; }
Cell的循环利用方式2
定义一个全局变量// 定义重用标识 NSString *ID = @"cell";
注册某个标识对应的cell类型
// 在这个方法中注册cell - (void)viewDidLoad { [super viewDidLoad]; // 注册某个标识对应的cell类型 [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:ID]; }
在数据源方法中返回cell
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { // 1.去缓存池中查找cell UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID]; // 2.覆盖数据 cell.textLabel.text = [NSString stringWithFormat:@"testdata - %zd", indexPath.row]; return cell; }
Cell的循环利用方式3
在storyboard中设置UITableView的Dynamic Prototypes Cell的数量>1设置cell的重用标识
在代码中利用重用标识获取cell
// 0.重用标识 // 被static修饰的局部变量:只会初始化一次,在整个程序运行过程中,只有一份内存 static NSString *ID = @"cell"; // 1.先根据cell的标识去缓存池中查找可循环利用的cell UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID]; // 2.覆盖数据 cell.textLabel.text = [NSString stringWithFormat:@"cell - %zd", indexPath.row]; return cell;
相关文章推荐
- iOS学习笔记(2)— UIView用户事件响应
- org.json.JSONException: No value for xxx
- UIScrollView
- 内核中的中断函数request_irq()
- quick接入SDK
- [GUI] QT事件与X11的关系
- UINavigationController 导航控制器
- leetcode_PermutationSequence
- ActionScript 3.0 学习(二) Flash Builder找不到所需版本的Adobe Flash Player
- NGUI使用4——创建动态字体
- NGUI使用3——制作图集&自定义按钮&切换按钮图片
- NGUI使用2——Button -- 按钮
- NGUI使用1——label
- UI进阶 —— 收起键盘方法
- UIGestureRecognizer 六种手势的用法 - iOS - UI基础知识总结6
- 一次性移除一个 UIView 所有子视图的方法
- HDU Children’s Queue
- HDU 3836 Equivalent SetsTarjan+缩点)
- 精美UI欣赏
- java 优先队列 PriorityQueue<E>