IOS开发之因Cell重用导致控件的状态级联改变

一个项目中由于要使用checbox,但是IOS的提供的控件中并没有checkbox,因此项目中使用了一个VKCheckbox的第三方框架,这个框架本身很好用,效果也非常的好!

但是犹豫将这个控件加入到了cell中,由于cell重用的原因会把下一个重用这个cell的checkbox的状态和上一个相同:

例如:你选中了第一个cell的checkbox,假设第5个cell是重用的第一个,那么第5个cell也会是被选中的状态,想了好久试了好多办法也没有一个特别的效率高的办法,最后选择了一个方法,解决思路如下:

创建一个全局的字典,然后key是cell的indexPath.item,注意这里要转成Sting类型,value就是checkbox的状态0或1.刷新界面的时候根据字典里的状态来重新设置每个checkbox的状态。我是在

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
中添加的这个方法,就是在返回cell之前设置的具体的代码如下:

let item = String(indexPath.item)
        ///初始化这个字典,若去出来的数据为nil则证明这个checkbook的状态没有被初始化
        
        if(self.checkBoxArray[item] == nil){
            self.checkBoxArray[item] = 0
        }
        
        print("item=\(indexPath.item)=\(self.checkBoxArray[item])")
        switch self.checkBoxArray[item]! {
        case 0:
            checkBox.setOn(false)
        case 1:
            checkBox.setOn(true)
        default:
            checkBox.setOn(false)
        }
        
        checkBox.checkboxValueChangedBlock = {
            isOn in
            ///如果ison为true则为1,否则为0
                    if(isOn){
                        self.checkBoxArray[item] = 1
                    }else{
                       self.checkBoxArray[item] = 0
                    }
        }

感觉不是特别的有效率,但是确实解决了这个问题!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值