解決UICollectionView的Cell復(fù)用引起的布局混亂問(wèn)題

之前遇到過(guò)好多解決TableView的重用問(wèn)題,最近做了一下關(guān)于CollectionView的重用打標(biāo)簽的問(wèn)題,發(fā)現(xiàn)CollectionView也會(huì)因?yàn)橹赜脤?dǎo)致布局混亂的問(wèn)題,具體場(chǎng)景如下圖所示
問(wèn)題復(fù)現(xiàn).gif

查了一下度娘發(fā)現(xiàn)沒(méi)有好的解決辦法,于是發(fā)動(dòng)自己的聰明才智,終于找到如下解決辦法(充分證明了自己動(dòng)手豐衣足食啊??)

  1. 首先創(chuàng)建一個(gè)可變數(shù)組,用來(lái)存放Cell的唯一標(biāo)示符
// 用來(lái)存放Cell的唯一標(biāo)示符
@property (nonatomic, strong) NSMutableDictionary *cellDic;
#warning 別忘了初始化喲
    self.cellDic = [[NSMutableDictionary alloc] init];
  1. 在cellForItemAtIndexPath:這個(gè)方法中作相應(yīng)的一些處理即可,代碼如下
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    // 每次先從字典中根據(jù)IndexPath取出唯一標(biāo)識(shí)符
    NSString *identifier = [_cellDic objectForKey:[NSString stringWithFormat:@"%@", indexPath]];
    // 如果取出的唯一標(biāo)示符不存在,則初始化唯一標(biāo)示符,并將其存入字典中,對(duì)應(yīng)唯一標(biāo)示符注冊(cè)Cell
    if (identifier == nil) {
        identifier = [NSString stringWithFormat:@"%@%@", DayCell, [NSString stringWithFormat:@"%@", indexPath]];
        [_cellDic setValue:identifier forKey:[NSString stringWithFormat:@"%@", indexPath]];
        // 注冊(cè)Cell
        [self.collectionView registerClass:[CalendarCollectionViewCell class]  forCellWithReuseIdentifier:identifier];
    }
    
    CalendarCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];

// 此處可以對(duì)Cell做你想做的操作了...
    
    return cell;
}

修改之后的效果圖如下所示


修改之后的效果圖.gif

本文純屬個(gè)人思路,如有更好的辦法歡迎指導(dǎo),一定虛心聽(tīng)取改正??

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容