2013-02-07 12 views
17

Kann jemand eine UICollectionView neu laden/aktualisieren, während die Sammlungsansicht angezeigt wird? Im Grunde bin ich auf der Suche nach etwas ähnlich wie die Standard reloadData Methode für eine UITableview.Aktualisieren einer UICollectionview

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

Vielleicht bin ich Missverständnis, aber UICollectionView implementiert ReloadData. – danh

Antwort

45

Sie können [self.myCollectionView reloadData]; Einzelne Abschnitte und Elemente einfach anrufen können auch wieder geladen werden . Die beste Vorgehensweise besteht darin, zuerst alle Elemente zu entfernen und dann hinzuzufügen, um Konflikte zu vermeiden.

+9

WFIW Ich glaube, der Grund dafür, dass Leute darauf stoßen, ist, dass sie daran gewöhnt sind, [myTableView reloadData] aufzurufen, aber mit UICollectionViews müssen Sie [myCollectionView.collectionView reloadData] aufrufen. – capikaw

+0

[self.myCollectionView reloadData]; nur einmal anrufen. möchte alle Daten neu laden. –

9
[self.collectionView reloadData]; 
+0

Während dies in der Tat die gewünschten Ergebnisse erzielt, zieht die Verwendung von reloadData alle Zellen neu und kann die Leistung beeinträchtigen. – DrunkenBeard

+0

Keine gute Idee, denn beim Nachladen des gesamten Tisches bekommen Sie schlechte Leistung und Energie. – Karsten

0

Die richtige und beste Weg

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

zu bedienen ist und alle wird eine schön animiert vorberechnet:

+1

Sie haben meinen Tag gerettet! Vielen Dank –

Verwandte Themen