UICollectionView重用单元格问题

时间:2016-07-19 10:49:05

标签: ios objective-c uitableview

我对集合视图单元格有疑问。首次加载我的集合视图时,它会显示以下项目:

- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath;
{


    CalendarCell *cell = [cv dequeueReusableCellWithReuseIdentifier:@"CalendarCell" forIndexPath:indexPath];

    [cell bindDate:_datesMgr.currentMonthItems[indexPath.row] andNowDate:_datesMgr.nowDate];


    // bind events

    if (_eventsMgr.eventsArray.count > 0){

        for (int i = 0; i < _eventsMgr.eventsArray.count ; i ++) {
            [cell bindConference:_eventsMgr.eventsArray[i]];
        }
    }


    return cell;
}

这些方法内部是将子视图添加到自定义单元格类的逻辑,这取决于某些情况。

它的全部工作,但是,当重新加载集合视图时(我在1秒后强制重新加载),一些单元格被重用并放置在其他单元格上,因此,它显示了#34; old&#34;图片和子视图。

我可以看到强制uicollection视图停止重用单元格的可能解决方案(每次都加载新单元格)。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:13)

尝试实施prepareForReuse方法,以重置自定义UICollectionViewCell

中的旧内容
-(void)prepareForReuse {
   [super prepareForReuse];
   self.yourimageview.image = nil; //and etc.
}