iOS—UITableView Cell重用机制
来源:互联网 发布:淘宝美工去哪里接单 编辑:程序博客网 时间:2024/05/16 13:48
- -
(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { -
NSString "Cell"];*CellIdentifier = [NSString stringWithFormat:@ -
UITableViewCell *cell = [tableView dequeueReusableCellWithI dentifier:CellIdentifier]; -
(cell == nil) { -
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefa ult reuseIdentifier:CellIdentifier] autorelease]; -
} -
the cell -
cell; - }
重用实现分析
查看UITableView头文件,会找到NSMutableArray*
TableView显示之初,reusableTableCells为空,那么tableView dequeueReusableCellWithI
比如:有100条数据,iPhone一屏最多显示10个cell。程序最开始显示TableView的情况是:
1. 用[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefa
2. 向下拖动tableView,当cell1完全移出屏幕,并且cell11(它也是alloc出来的,原因同上)完全显示出来的时候。cell11加入到 visiableCells,cell1移出visiableCells,cell1加入到reusableTableCells。
3. 接着向下拖动tableView,因为reusableTableCells中已经有值,所以,当需要显示新的 cell,cellForRowAtIndexPath再次被调用的时候,tableView dequeueReusableCellWithI
所以整个过程并不难理解,但需要注意正是因为这样的原因:配置Cell的时候一定要注意,对取出的重用的cell做重新赋值,不要遗留老数据。
一些情况
使用过程中,我注意到,并不是只有拖动超出屏幕的时候才会更新reusableTableCells表,还有:
1. reloadData,这种情况比较特殊。一般是部分数据发生变化,需要重新刷新cell显示的内容时调用。在 cellForRowAtIndexPath调用中,所有cell都是重用的。我估计reloadData调用后,把visiableCells中所有 cell移入reusableTableCells,visiableCells清空。cellForRowAtIndexPath调用后,再把 reuse的cell从reusableTableCells取出来,放入到visiableCells。
2. reloadRowsAtIndex,刷新指定的IndexPath。如果调用时reusableTableCells为空,那么 cellForRowAtIndexPath调用后,是新创建cell,新的cell加入到visiableCells。老的cell移出 visiableCells,加入到reusableTableCells。于是,之后的刷新就有cell做reuse了。
- -
(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { -
NSString "Cell"];*CellIdentifier = [NSString stringWithFormat:@ -
UITableViewCell *cell = [tableView dequeueReusableCellWithI dentifier:CellIdentifier]; -
(cell == nil) { -
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefa ult reuseIdentifier:CellIdentifier] autorelease]; -
} -
the cell -
cell; - }
重用实现分析
查看UITableView头文件,会找到NSMutableArray*
TableView显示之初,reusableTableCells为空,那么tableView dequeueReusableCellWithI
比如:有100条数据,iPhone一屏最多显示10个cell。程序最开始显示TableView的情况是:
1. 用[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefa
2. 向下拖动tableView,当cell1完全移出屏幕,并且cell11(它也是alloc出来的,原因同上)完全显示出来的时候。cell11加入到 visiableCells,cell1移出visiableCells,cell1加入到reusableTableCells。
3. 接着向下拖动tableView,因为reusableTableCells中已经有值,所以,当需要显示新的 cell,cellForRowAtIndexPath再次被调用的时候,tableView dequeueReusableCellWithI
所以整个过程并不难理解,但需要注意正是因为这样的原因:配置Cell的时候一定要注意,对取出的重用的cell做重新赋值,不要遗留老数据。
一些情况
使用过程中,我注意到,并不是只有拖动超出屏幕的时候才会更新reusableTableCells表,还有:
1. reloadData,这种情况比较特殊。一般是部分数据发生变化,需要重新刷新cell显示的内容时调用。在 cellForRowAtIndexPath调用中,所有cell都是重用的。我估计reloadData调用后,把visiableCells中所有 cell移入reusableTableCells,visiableCells清空。cellForRowAtIndexPath调用后,再把 reuse的cell从reusableTableCells取出来,放入到visiableCells。
2. reloadRowsAtIndex,刷新指定的IndexPath。如果调用时reusableTableCells为空,那么 cellForRowAtIndexPath调用后,是新创建cell,新的cell加入到visiableCells。老的cell移出 visiableCells,加入到reusableTableCells。于是,之后的刷新就有cell做reuse了。
- iOS—UITableView Cell重用机制
- ios UITableView中Cell的重用机制
- iOS之UITableView Cell重用机制
- ios UITableView中Cell的重用机制
- IOS笔记二 UITableView的Cell重用机制
- IOS UITableView中Cell的重用reuse机制分析
- iOS UItableview重用机制
- 解决UITableView中cell重用机制
- UITableView中Cell的重用机制
- UITableView-cell 的重用机制
- UITableView中Cell使用标识符重用机制
- 解决UITableView中Cell重用机制问题
- UITableView中cell的重用机制
- iOS UITableView的重用机制
- ios tableView那些事 (十六) UITableView中Cell重用机制导致内容重复解决方法
- ios tableView那些事 (十六) UITableView中Cell重用机制导致内容重复解决方法
- ios tableView那些事 (十六) UITableView中Cell重用机制导致内容重复解决方法
- ios tableView UITableView中Cell重用机制导致内容重复解决方法
- 再见!西门子宣布彻底退出家电市场
- ExtJs学习(一)
- final
- armeabi-v7a 与 armeabi有什么区别
- CSS中tabIndex、label、fieldset标签学习
- iOS—UITableView Cell重用机制
- iOS安全攻防(十四):Hack实战——支付宝app手势密码校验欺骗
- 家政O2O受资本追捧背后:如何卡位细分市场?
- java使用闭环数组自定义高性能队列
- 黑莓奇葩方屏手机Passport定价599美元
- android实现拖动上传图片和文字至服务器
- php中使用endif,endwhile等语法
- Android 跨进程事件处理(一)——模拟点击、全局截屏
- android 项目移植/分辨率适配与dip(dp)的使用