关于使用UICollectionView实现单选效果的总结

项目中往往会遇到例似图1的所示的设计

图1

网上有很多优秀的前辈们分享自己的一套解决方案,比如通过控制model,改变model的属性,来加载cell的样式,也是个不错的选择,不过我觉得,如果要实现多选的情况,这种方法就比较好,但是如果是单选的话,我觉得使用cell本身自带的属性及方法就能实现应该会更好一些。

但是在使用collectionView实现该效果图的时候,有时会遇到以下问题:

.选中其中一个item之后,滑动列表,发现选中的效果消失了,并且有时会显示选中的是其它的item。

导致的情况的原因是collectionview的重用机制,所以为了避免解决上面出现的问题,我的解决思路如下:

1.自定义视图View,加载UICollectionView

为了提高代码的可重用性,可移植性,以及轻量化Controller的目的,最好自定义一个view视图,这样视图控制器不会那么的臃肿。好了废话一堆。

因为往往当第一次展示该页面的时候,会有一个默认的选择,所以需要声明2个变量。

图2

然后用到的UICollectionView协议方法是:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath;具体实现见(图3)

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath;具体实现见(图4)

图3


图4

2.自定义UICollectionViewCell

重写:- (void)setSelected:(BOOL)selected;的方法


关于使用UICollectionView实现单选效果的总结_第1张图片
图5


这样就可以实现如图1 所示的效果啦,如果还有更简洁的方法,希望亲亲们多多指导啦。biubiubiu❤️

你可能感兴趣的:(关于使用UICollectionView实现单选效果的总结)