2013-02-07 20 views
17

Koleksiyon görünümü görüntülenirken UICollectionView öğesinin nasıl yeniden yükleneceğini/yenileneceğini bilen var mı? Temelde bir UITableview için standart reloadData yöntemine benzer bir şey arıyorum.UICollectionview ürününün yenilenmesi

[self.myCollectionView reloadSections:indexSet]; 
[self.myCollectionView reloadItemsAtIndexPaths:arrayOfIndexPaths]; 
+5

Belki de yanlış anladım, ancak UICollectionView, reloadData uygular. – danh

cevap

45

sadece [self.myCollectionView reloadData]; Bireysel bölümler ve öğeleri çağırabilir da tekrar yüklenebilir . En iyi uygulama, ilk olarak, tüm öğeleri, çatışmaları önlemek için kaldırmak ve kaldırmaktır.

+9

WFIW İnsanların bunun üzerinden gelmelerinin nedeninin [myTableView reloadData] çağrısında bulundukları, ancak UICollectionViews ile [myCollectionView.collectionView reloadData] çağırmanız gerektiğine inanıyorum. – capikaw

+0

[self.myCollectionView reloadData]; sadece bir kez arayın. tüm verileri yeniden yüklemek istiyor. –

9
[self.collectionView reloadData]; 
+0

Bu gerçekten istenen sonuçları elde etmesine rağmen, reloadData kullanarak tüm hücreleri yeniden çizebilir ve performansı etkileyebilir. – DrunkenBeard

+0

İyi bir fikir değil, çünkü tam tablonun yeniden yüklenmesi kötü bir performans kazanır ve enerji çekilir. – Karsten

0

doğru ve iyi yolu

NSMutableArray *indexPaths = [NSMutableArray array]; 
//prepare some data 
//batchupdate as block 
[self.collectionView performBatchUpdates:^{ 
    //operations like delete 
    [self.collectionView deleteSections:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, count)]]; 
    [self.collectionView insertItemsAtIndexPaths:indexPaths]; 
} completion:^(BOOL finished) { 
    // call something when ready 
    } 
}]; 

kullanmaktır ve tüm bir güzel animasyonlu önceden hesaplanabilir alır:

+1

Günümü kurtardın! Teşekkürler –