項(xiàng)目中往往會(huì)遇到例似圖1的所示的設(shè)計(jì)
網(wǎng)上有很多優(yōu)秀的前輩們分享自己的一套解決方案,比如通過(guò)控制model,改變model的屬性姿现,來(lái)加載cell的樣式结缚,也是個(gè)不錯(cuò)的選擇航闺,不過(guò)我覺(jué)得,如果要實(shí)現(xiàn)多選的情況喝滞,這種方法就比較好阁将,但是如果是單選的話,我覺(jué)得使用cell本身自帶的屬性及方法就能實(shí)現(xiàn)應(yīng)該會(huì)更好一些右遭。
但是在使用collectionView實(shí)現(xiàn)該效果圖的時(shí)候做盅,有時(shí)會(huì)遇到以下問(wèn)題:
.選中其中一個(gè)item之后,滑動(dòng)列表窘哈,發(fā)現(xiàn)選中的效果消失了吹榴,并且有時(shí)會(huì)顯示選中的是其它的item。
導(dǎo)致的情況的原因是collectionview的重用機(jī)制滚婉,所以為了避免解決上面出現(xiàn)的問(wèn)題图筹,我的解決思路如下:
1.自定義視圖View,加載UICollectionView
為了提高代碼的可重用性满哪,可移植性婿斥,以及輕量化Controller的目的,最好自定義一個(gè)view視圖哨鸭,這樣視圖控制器不會(huì)那么的臃腫。好了廢話一堆娇妓。
因?yàn)橥?dāng)?shù)谝淮握故驹擁?yè)面的時(shí)候像鸡,會(huì)有一個(gè)默認(rèn)的選擇,所以需要聲明2個(gè)變量哈恰。
然后用到的UICollectionView協(xié)議方法是:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath只估;具體實(shí)現(xiàn)見(jiàn)(圖3)
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath;具體實(shí)現(xiàn)見(jiàn)(圖4)
2.自定義UICollectionViewCell
重寫:- (void)setSelected:(BOOL)selected着绷;的方法
這樣就可以實(shí)現(xiàn)如圖1 所示的效果啦蛔钙,如果還有更簡(jiǎn)潔的方法,希望親親們多多指導(dǎo)啦荠医。biubiubiu??