【发布时间】:2016-07-19 10:49:04
【问题描述】:
我对收藏视图单元格有疑问。当我的收藏视图第一次加载时,它会显示这样的项目:
- (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 秒后强制重新加载)时,一些单元格被重复使用并放置在其他单元格上,因此,它显示“旧”图像和子视图。
我可以看到强制 uicollection 视图停止重用单元格的可能解决方案(即,每次都加载新单元格)。有没有办法做到这一点?
【问题讨论】:
-
adding subviews to custom cell这意味着您是在创建新的子视图实例并添加代码吗?如果是,则需要删除旧的子视图(如果存在)。 -
@Akhilrajtr 我应该怎么做,并找到我需要删除它们的场合?
-
您可以为每个子视图添加一个特定的标签并使用相应的标签删除该视图,或者您可以从特定视图中删除所有子视图并重新添加它们。由于您使用的是自定义单元格,我更喜欢在 xib 或情节提要中设计单元格,并使用 outlet 为每个单元格设置值,而不是每次都创建新实例并添加。
标签: ios objective-c uitableview