文档章节

UItableViewCell避免重用的几种方法

iOS赵师顺
 iOS赵师顺
发布于 2017/03/24 18:06
字数 567
阅读 19
收藏 0
  // 方案一  通过不让他重用cell 来解决重复显示
  - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
  {
      // 定义唯一标识
      static NSString *CellIdentifier = @"Cell";
      // 通过indexPath创建cell实例 每一个cell都是单独的
      UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
      // 判断为空进行初始化  --(当拉动页面显示超过主页面内容的时候就会重用之前的cell,而不会再次初始化)
      if (!cell) {
         cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
     }
     // 对cell 进行简单地数据配置
     cell.textLabel.text = @"text";
     cell.detailTextLabel.text = @"text";
     cell.imageView.image = [UIImage imageNamed:@"4.png"];     
     return cell;
 }
 // 方案二  同样通过不让他重用cell 来解决重复显示 不同的是每个cell对应一个标识
  - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
  {
      // 定义cell标识  每个cell对应一个自己的标识
      NSString *CellIdentifier = [NSString stringWithFormat:@"cell%ld%ld",indexPath.section,indexPath.row];
      // 通过不同标识创建cell实例
      UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
      // 判断为空进行初始化  --(当拉动页面显示超过主页面内容的时候就会重用之前的cell,而不会再次初始化)
      if (!cell) {
         cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
     }
     // 对cell 进行简单地数据配置
     cell.textLabel.text = @"text";
     cell.detailTextLabel.text = @"text";
     cell.imageView.image = [UIImage imageNamed:@"4.png"];
     
     return cell;
 }
 // 方案三  当页面拉动需要显示新数据的时候,把最后一个cell进行删除 就有可以自定义cell 此方案即可避免重复显示,又重用了cell相对内存管理来说是最好的方案 前两者相对比较消耗内存
  - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
  {
      // 定义唯一标识
      static NSString *CellIdentifier = @"Cell";
      // 通过唯一标识创建cell实例
      UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
      
      // 判断为空进行初始化  --(当拉动页面显示超过主页面内容的时候就会重用之前的cell,而不会再次初始化)
     if (!cell) {
         cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
     }
     else//当页面拉动的时候 当cell存在并且最后一个存在 把它进行删除就出来一个独特的cell我们在进行数据配置即可避免
     {
         while ([cell.contentView.subviews lastObject] != nil) {
             [(UIView *)[cell.contentView.subviews lastObject] removeFromSuperview];
         }
     }
     // 对cell 进行简单地数据配置
     cell.textLabel.text = @"text";
     cell.detailTextLabel.text = @"text";
     cell.imageView.image = [UIImage imageNamed:@"4.png"];
     
     return cell;
 }

 

© 著作权归作者所有

上一篇: WKWebView具体使用
下一篇: iOS .9图片加载
iOS赵师顺
粉丝 3
博文 74
码字总数 36150
作品 0
昌平
程序员
私信 提问
UITableView的优化原理

当我们下啦一个 UITableView时,如果没有做优化,只是简单的实现功能代码如下,这样当我们有上百条tableviewcell的时候,我们滑动的非常快时会非常费内存,当然苹果公司不会让我们这样干,苹...

哥特复心
2013/11/29
5.3K
3
UI_09 UITableView(表视图)

⼀、表视图 在iOS中,要实现表格数据展示,最常用的做法就是使用UITableView。UITableView继承自UIScrollView,因此支持垂直滚动,而且性能极佳 1、表示图的样式 UITableViewStylePlain UITa...

黑伞将军
2015/08/26
63
0
IOS高访新浪微博界面(讲解如何自定义UITableViewCell,处理@#链接 特殊字符)

在开发过程中,有好多应用都会嵌入新浪微博的界面,今天整理一下代码。 首先看界面效果图: Demo下载地址:http://download.csdn.net/detail/rhljiayou/6760745 思路:首先放一个UITableView...

长平狐
2013/12/25
256
0
iOS开发14:UITableView与UITableViewCell

UITableView用来以表格的形式显示数据。关于UITableView,我们应该注意: (1)UITableView用来显示表格的可见部分,UITableViewCell用来显示表格的一行。 (2)UITableView并不负责存储表格...

双子座
2012/03/27
22.6K
24
storyboard中用xib文件创建定制的UITableViewCell对象

IOS5.0之后,在UITableView里可直接绘制自定义的UITableViewCell,还不会自定义UITableViewCell,直接传送门。要记得的是storyboard中的identifier(标识)一定要和代码中一致,用起来直观方...

长平狐
2012/11/01
701
0

没有更多内容

加载失败,请刷新页面

加载更多

DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
今天
3
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
今天
4
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
今天
6
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
今天
5
0
Python机器学习之数据探索可视化库yellowbrick

背景介绍 从学sklearn时,除了算法的坎要过,还得学习matplotlib可视化,对我的实践应用而言,可视化更重要一些,然而matplotlib的易用性和美观性确实不敢恭维。陆续使用过plotly、seaborn,...

yeayee
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部