项目中往往会遇到例似图1的所示的设计
网上有很多优秀的前辈们分享自己的一套解决方案,比如通过控制model,改变model的属性,来加载cell的样式,也是个不错的选择,不过我觉得,如果要实现多选的情况,这种方法就比较好,但是如果是单选的话,我觉得使用cell本身自带的属性及方法就能实现应该会更好一些。
但是在使用collectionView实现该效果图的时候,有时会遇到以下问题:
.选中其中一个item之后,滑动列表,发现选中的效果消失了,并且有时会显示选中的是其它的item。
导致的情况的原因是collectionview的重用机制,所以为了避免解决上面出现的问题,我的解决思路如下:
1.自定义视图View,加载UICollectionView
为了提高代码的可重用性,可移植性,以及轻量化Controller的目的,最好自定义一个view视图,这样视图控制器不会那么的臃肿。好了废话一堆。
因为往往当第一次展示该页面的时候,会有一个默认的选择,所以需要声明2个变量。
然后用到的UICollectionView协议方法是:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath;具体实现见(图3)
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath;具体实现见(图4)
2.自定义UICollectionViewCell
重写:- (void)setSelected:(BOOL)selected;的方法
这样就可以实现如图1 所示的效果啦,如果还有更简洁的方法,希望亲亲们多多指导啦。biubiubiu❤️