iOS开发——取消cell复用


       cell复用本来是件好事,有时不想要cell复用,比如遇到的下面的两种情况就需要取消cell重用

   

1. cell里有动画效果的时候,上下滑动cell时,再次出现动画效果。我们只想要第一次展示cell有动画效果

     动画效果比如有:单个进度条、绘制图表路径动画效果


2. 在问题回访或者问卷调查列表有单选时,滑动列表新的cell的单选选项由于复用cell

    已经被选中(新的选项我们还没选中)

  


  网上很多取消cell复用的方法,在tableview代理方法里(

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
),比如:

     一、给定不同的cell复用ID  

     二、cell重新初始化

     三、cell视图从superView移除


    可能是用的swift开发的原因还是什么其他原因,很多方法要么行不通(tableview代理方法奔溃,代码走不过去),

要么没效果。


我们换种思路:cell还是继续复用,但用数据源(数据模型或者cell全局bool属性)控制效果


一 、  针对第一种纯展示的cell里的动画(进度条效果,绘图路径动画)重复的情况:

    我们只需在cell里面加一个bool值属性比如haveLoad,默认为false。当动画加载时,

    判断这个bool值为false进行动画效果,动画效果完成后将haveLoad设为true。

    若动画加载时判断bool值为true时直接为动画后的样式。

    

   之前OC语言的部分参考示例:


   

二、真对第二种cell情况,比第一种稍微多一步。列表单选选项问题,

       需要保持cell中单选按钮已选中原样(选中是、否的状态和原来一致)

        1.核心方法还是一样,对于单选为是、否的两种选项,可以用2个bool值属性对应是否两个选项的状态,

   但这样麻烦,普适性不佳,要是选项四五个就不合适。所以是用一个整型int变量属性来区分。默认值为0,

   选中是按钮时,值改为1,选中否时,值改为2。(选项四五种时依次类推)这种需要收集选项状态的数据,

   可以将这个整型int变量放到列表数组内的数据模型里,方便记录选中状态和下一步。

        2.cell提供一个公有方法(这个方法在tableview代理方法时调用这个cell公有方法),方法内根据整型int变量的值,恢复选项选中的状态。

      


    swift语言部分代码参考示例,此整型变量是存放到数据模型里的



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值