2013-05-10 70 views
1

我有一個問題,我不確定它是否可行,所以我想我會在這裏尋求建議!UICollectionView在快速加載中存儲數組中的單元格

我有一個應用程序,它使用UICollectionView向用戶呈現按鈕的網格。我使用引導樣式的漸變按鈕,因此繪製每個單元格(在一個'網格中可以有40個按鈕),它使用一些系統資源,重繪可能需要一些時間(長達半秒!)。用戶也可以在集合視圖中加載不同的集合。爲了規避這種加載時間,是否可以將所有單元格保存在一個數組中,而不是在調用-cellForRowAtIndexPath時配置每個單元格,只需從數組中拉出單元格?

我不太確定這是否做到了。我的應用程序有一個加載屏幕,因此可以在啓動時填充該數組。

感謝, 保羅

回答

4

您可以使用NSCache舉行繪製細胞,

1)@屬性(非原子,強)NSCache * myCache;

2)在viewDidLoad中

self.myCache = [[NSCache的alloc] INIT];

3)使用這2種方法,

-(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]]; 
} 
+2

謝謝 - 幫助了很多! – larrysanchez 2013-05-10 12:03:06

+0

我還有一個問題 - 有沒有辦法讓這個多維?我正在考慮根據需要創建儘可能多的緩存,然後將它們添加到數組中?不幸的是會有一個動態的數量,否則我可以在.h文件中聲明它們。 – larrysanchez 2013-05-10 12:28:24

+0

您可以爲它們保留一個緩存對象,您可以擁有不同的密鑰。 – 2013-05-10 12:35:23

相關問題