【发布时间】:2014-03-05 00:40:48
【问题描述】:
我有一个包含自定义单元格的集合视图,只要单元格在屏幕上可见,它们就会不断重新加载,例如集合视图已向下滚动,然后又向上滚动,以便单元格再次可见。我想关闭它,并希望单元格只加载一次,而不是每次可见时都刷新。这是我初始化单元格的代码。
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath: (NSIndexPath *)indexPath{
NSLog(@"cell row %d is being refreshed", indexPath.row);
static NSString *CellIdentifier = @"Cell";
LevelCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];
Level *levelTemp =[levels objectAtIndex:indexPath.item];
[[cell levelNumber]setText:[NSString stringWithFormat:@"Level %@",levelTemp.level]];
DataClass *obj=[DataClass getInstance];
obj.totalC=obj.totalC+([levelTemp.comp_questions intValue]);
obj.totalQ=obj.totalQ+([levelTemp.max_questions intValue]);
int unlockA = [levelTemp.unlockAmount intValue];
return cell;
}
【问题讨论】:
-
没有。不,你没有。这正是表视图和集合视图的设计方式。您只需要在内存中保留与屏幕上一样多的单元格...如果您尝试将所有这些单元格保留在内存中,则会大大降低性能...
-
njgrif 是正确的,但是如果您不关心性能损失,请给每个单元格一个唯一的单元格标识符,它将每个单元格生成一次,而不是重复使用它们。
-
这不是真的,@box86rowh 这实际上是两全其美。它会将单元格保存在内存中......但它仍然会在它们被放到屏幕上之前重新加载它们。
-
归根结底,collection view cell 是一个 UI 元素,仅当它要出现在屏幕上时才需要在内存中。这是一个 XY 问题...还有其他一些原因,您认为需要将其保存在内存中...如果您能解释原因是什么,我们可以帮助您完成实际需要做的事情。跨度>
-
啊,谢谢你的信息
标签: ios objective-c uicollectionview