的問題預先填入了UICollectionView小區重用隊列
我有一個應用程序與單個UICollectionView
其的口吃第一次我滾動它。我已經將源代碼縮小到新單元(2)正在創建(使用initWithFrame:
)這一事實,因爲沒有任何單元可以重複使用。在最初的滾動之後,重用隊列不是空的,單元格可以重用並且不會出現口吃。
的哈克
所以我已經能夠用一個私有方法的幫助,要解決這個問題的iOS runtime headers:
- (void)_reuseCell:(id)arg1;
我的假設是,這是被添加在那裏細胞回到重用隊列中。使用這種無證方法的黑客看起來像這樣:
int prefillCellCount = 10;
NSMutableArray *cells = [[NSMutableArray alloc] initWithCapacity:prefillCellCount];
for (int i=0; i<10prefillCellCount i++) {
UICollectionViewCell *cell = [self.gridView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:[NSIndexPath indexPathForRow:i inSection:0]];
[cells addObject:cell];
}
for (UICollectionViewCell *cell in cells) {
[self.gridView _reuseCell:cell];
}
黑客工程!滾動時沒有口吃。
問題
我不認爲我將能夠得到過去在App Store評審與這個技巧。有沒有辦法做到這一點,而不使用無證方法?如果沒有,是我唯一的手段只是混淆黑客?
謝謝,這個解決方案效果很好。只要確保預先分配的單元格與正在顯示的單元格具有相同的索引路徑。 –
@ scompt.com是否仍然適合你們?當我在iPad 3上嘗試使用這個視圖時,我得到的視圖在整個地方都消失了(這確實存在已知的出列方法問題:http://stackoverflow.com/questions/19276509/uicollectionview-do-not-reuse-cells) 。 – arsenius