IOS开发之因Cell重用导致控件的状态级联改变
来源:互联网 发布:深圳网络推广外包 编辑:程序博客网 时间:2024/05/18 00:58
一个项目中由于要使用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
- IOS开发之因Cell重用导致控件的状态级联改变
- 总结——关于cell重用导致数据(控件状态)重复的解决方案
- iOS 解决cell因重用机制出错的问题
- iOS开发之关于cell的重用机制
- iOS开发之Cell重用机制理解
- iOS开发笔记--解决UITableView中Cell重用机制导致内容出错的方法总结
- iOS开发笔记--解决UITableView中Cell重用机制导致内容出错的方法总结
- iOS开发笔记--解决UITableView中Cell重用机制导致内容出错的方法总结
- 解决因TableView重用机制导致的cell内容出错的三个方法
- ios之清除cell缓存,解决cell的重用问题。
- iOS使用NSMutableSet记录cell控件选中状态避免cell重用问题
- ios cell 控件状态被重用,教你三步跳出坑(cell里面控件状态版)
- 【10/27】 iOS开发成长之路,【cell重用】
- iOS开发-简述UITableView中cell的重用问题
- iOS开发,tableView中cell的重用详解
- UITableViewCell自定义accessoryView,通过tag避免因为Cell重用导致的button状态重复
- IOS开发 UITableView中Cell重用机制导致内容重复解决方法
- ios开发基础1---UITableView中cell重用导致内容出错
- web开发性能优化---项目架构篇
- 51nod 1766 线段树维护树的直径
- 从 Java 到 Go,再到 Java
- bee(github.com/beego/bee)源码分析
- Shadowsocks 与 VPN 的差别
- IOS开发之因Cell重用导致控件的状态级联改变
- 如何构建一个单机高性能服务器
- 代理模式(Proxy)
- html段落开头空两格---css技巧text-indent
- js 转码 和c#解码
- web开发性能优化---数据库篇
- Eclipse 新建项目时使用已有的环境配置 & opencv项目不必重复配置
- 每天工作4小时的程序员
- 随手画圆的简单实现