1

我有一个问题,我不确定是否可能,所以我想我会在这里寻求建议!

我有一个应用程序,它使用 UICollectionView 向用户呈现按钮网格。我正在使用引导式渐变按钮,因此要绘制每个单元格(一个“网格”中可以有 40 个按钮),这会使用一些系统资源,并且重绘可能需要一些时间(嗯 - 最多半秒!)。用户也可以将不同的集合加载到集合视图中。为了规避这个加载时间,是否可以将所有单元格保存在一个数组中,而不是在调用 -cellForRowAtIndexPath 时配置每个单元格,只需从数组中拉出单元格?

我不太确定这是否已完成。我的应用程序有一个加载屏幕,因此可以在启动时填充数组。

谢谢,保罗

4

1 回答 1

4

您可以使用 NSCache 来保存绘制的单元格,

1) @property(nonatomic, strong) NSCache *myCache;

2)在viewDidLoad中,

self.myCache = [[NSCache alloc] init];

3)使用这两种方法,

-(id) cellForIndexPathRow:(NSNumber *) number{
    return [self.myCache objectForKey:number];
}

-(void) setCell:(id) cell forIndexPathRow:(NSNumber *) number{
    [self.myCache setObject:cell forKey:number];
}

4)当你绘制单元格时,

第一次通话

id cell = [self cellForIndexPathRow:[NSNumber numberWithInt:indexPath.row]];
if(!cell){
 //then create draw the cell

 //store the drawn cell in cache     
 [self setCell:cell forIndexPathRow:[NSNumber numberWithInt:indexPath.row]];
}
于 2013-05-10T10:52:27.277 回答