当前位置: 首页 > news >正文

张家口网站建设zjktao网站商品展示页怎么做的

张家口网站建设zjktao,网站商品展示页怎么做的,琼海做网站公司,安卓wordpress客户端我自己在实验中对cell的重用总结如下: 非自定义Cell和非自定义cell的复用情况一样: 第一次加载创建tableView的时候,是屏幕上最多也显示几行cell就先创建几个cell,此时复用池里什么都没有开始下滑tableView,刚开始滑…

我自己在实验中对cell的重用总结如下:

非自定义Cell和非自定义cell的复用情况一样:

  1. 第一次加载创建tableView的时候,是屏幕上最多也显示几行cell就先创建几个cell,此时复用池里什么都没有
  2. 开始下滑tableView,刚开始滑动时,由于第一行没有完全滑出屏幕进复用池时,下面的新cell已经显示到屏幕上了,所以下方这个新滑出来的cell就是新创建的cell而不是复用的cell(复用时也得看新加载的cell和复用池中的备用cell有没有同类型的id,没有就不复用),然后接着滑动,第一个cell就完全出屏幕进入复用池了,下面我们接着滑动,接着那个需要新显示出来的cell如果和复用池中我们保存的第一个cell是同种id,如果是就直接拿来复用,如果不是就新创建(判断是否能复用和新创建的操作都在cell的编辑函数:cellForRowAtIndexPath:中)
  3. 上滑tableView和下滑原理基本一致,完全出屏幕的入复用池,需要新加载到屏幕的cell,先看池中有没有同id的cell,有了就复用,没有就创建。

下面我们讲一个使用cell时需要注意的点:

复用时从复用池中取出来的cell可以是已经捆绑过数据或者加过子视图的,所以,如果有必要,要清除数据,比如(label的text)和remove掉add过的子视图(使用tag),否则就有可能造成复用后出现显示的内容不符预期的情况,比如说我们有一个开始创建id为@"test"的cell,我们在执行cell的编辑函数:cellForRowAtIndexPath:中有一个判断分支,符合某种情况时需要在cell上显示一个button,而不符合那种情况的时候就不显示button,而恰好我们这个cell符合情况,于是就添加了button相关的数据,然后显示出了button,接着我们滑动了tableView,导致我们刚才创建的这个id为@"test"的cell进入了复用池,然后再继续下滑的时候有一个新的id为@"test"的cell需要被加载出来,于是就查看了复用池,发现里面有同id的cell,所以就直接拿来复用了,复用的时候对里面的数据进行了自己的设定,本类好像没什么问题,但是恰好这个新cell不符合那个要显示button的条件,然后就不会去执行对button添加数据的操作,我们预想着这个新cell和之前我们创建的id为@"test"的cell的区别就是新的没有button,旧的有button,然后两者其他控件也就是数据内容不同(比如label的text不一样这些),但是实际情况却是这个新创建的cell上面显示的依然存在button,和我们预想的不一致,其原因就是复用时所取出来的旧cell是已经捆绑过数据且加过子视图的,虽然我们新cell创建时没有走对button添加数据的代码,但是由于旧cell走过了,且向button添加的数据都在,所以就导致新cell上面就有一个和旧cell一模一样的button。

这就是复用中可能存在的一个常见的难搞的问题,但是解决起来其实也非常简单,重点在于:避免重用机制出错

以下有三种方法:(最推荐第三种

  1. 重用机制调用的就是dequeueReusableCellWithIdentifier这个方法,方法的意思就是“出列可重用的cell”,因而只要将它换为cellForRowAtIndexPath(只从要更新的cell的那一行取出cell),就可以不使用重用机制,因而问题就可以得到解决,但会浪费一些空间。
    在这里插入图片描述

  2. 为每个cell指定不同的重用标识符(reuseIdentifier)来解决。重用机制是根据相同的标识符来重用cell的,标识符不同的cell不能彼此重用。

NSString *identifier = [NSString stringWithFormat:@"TimeLineCell%d%d",indexPath.section,indexPath.row];
  1. 在新cell创建走编辑函数:cellForRowAtIndexPath:时,在里面加一段操作,去remove多余的那个子视图或者清除旧数据

在这里插入图片描述

而且依我本人之见,最好使用清除旧数据而不是remove多余的子视图。因为这个正在新建的cell后面也许也会进入自动释放池,而且它到时候也可能会被拿来复用,如果那个复用它的cell刚好需要显示button而这个被复用的cell连button这个视图都没添加到cell上,那直接向button添加数据时程序就会crash,所以清除所有数据是不错的选择,反正每次执行编辑函数:cellForRowAtIndexPath:时都会为对应行组的cell重新添加那些子视图上的数据(相当于覆写了旧数据),我们只需要在所有的重新添加数据操作之前讲被复用的cell上子视图的数据全删了就行。
但是如果偏要走remove子视图的方法也不是不行,我们可以巧妙点,从复用池取出来要被复用的cell之后直接重新alloc初始化一下这个被复用的cell,相当于之前清空了原本保存的所有子视图的全部数据,而原本添加到cell上的子视图都还在,只是没有数据不显示罢了,这也是很好的手段。

http://www.yayakq.cn/news/98373/

相关文章:

  • 游戏音效设计师培训织梦做网站利于优化
  • 第二季企业网站开发江门建站模板搭建
  • 做百度手机网站排名网址注册在哪里注册
  • 新站网站建设云南建设企业网站
  • 网站用绝对路径好还是相对路径seo易企秀h5制作官网登录
  • 学做网站 软件软件开发工具名词解释
  • 公司网站建设设计全国企业信用信息公示系统辽宁
  • 扶贫办门户网站建设管理办法最近火爆的新闻
  • 平台式建站网站建设方案功能
  • 最新的网站开发技术自助建站h5
  • 做网站口碑比较好的大公司有域名了也备案了怎么做网站
  • 温州网站建设这个常见的网络营销形式有
  • 天津市住房和城乡建设部网站如何备案成企业网站
  • 那块做微信平台网站网站建设会计分录怎么写
  • 哪里有手机网站建设联系方式附近设计公司有哪些
  • 盐城网盐城网站建设站建设seo最新快速排名
  • 国外设计网站 绿色的什么网站可以接单做设计方案
  • 阿里云做淘宝客网站吗怎么在wordpress顶栏里
  • 做网站要用什么计算机语言什么网站的易用性
  • idc网站模板医疗网站建设基本流程
  • 京东网站优化网站建设 公众号
  • 网站怎么在百度搜不到网页网站开发平台
  • 黄岛开发区网站制作wordpress漏洞总结
  • 网站建设应具备的技能长沙做网站报价
  • 免费网站服务器珠海百度推广优化排名
  • 企业网站seo网址织梦如何做汽车贸易网站
  • 农村基本制度建设网站南山模板网站建设公司
  • 如何在手机上做网站微信小程序案例源码
  • 西樵网站建设wordpress默认排序
  • 动力 网站建设海外建站推广