2013-02-07 21 views
17

Czy ktoś wie, jak ponownie załadować/odświeżyć widok UICollectionView, gdy wyświetlany jest widok kolekcji? Zasadniczo szukam czegoś podobnego do standardowej metody reloadData dla UITableview.Odświeżanie widoku UICollectionview

+5

Może jestem nieporozumienie, ale UICollectionView wdraża reloadData. – danh

Odpowiedz

45

można po prostu zadzwonić [self.myCollectionView reloadData]; poszczególnych sekcji i elementy mogą być również przeładowywane:

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

WFIW Wierzę, że powodem, dla którego ludzie napotykają to, jest to, że są przyzwyczajeni do wywoływania [myTableView reloadData], ale z UICollectionViews musisz wywołać [myCollectionView.collectionView reloadData]. – capikaw

+0

[self.myCollectionView reloadData]; zadzwoń tylko raz. chcesz odświeżyć wszystkie dane. –

9
[self.collectionView reloadData]; 
+0

Podczas gdy to rzeczywiście przyniesie pożądane rezultaty, użycie polecenia reloadData przerysuje wszystkie komórki i może wpłynąć na wydajność. – DrunkenBeard

+0

Niezbyt dobry pomysł, ponieważ ponowne załadowanie pełnego stołu daje złe wyniki i energia jest narysowana. – Karsten

0

Prawidłowe i najlepszym sposobem jest użycie

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 
    } 
}]; 

i wszystko pobiera precomputed ładnie animowane . Najlepszą praktyką jest usunięcie i dodanie wszystkich elementów, aby uniknąć konfliktów.

+1

Uratowałeś mój dzień! Dzięki –

Powiązane problemy