2012-10-04 14 views
5

[tableView reloadData] influisce sulla performance in iOS? Che cos'è [tableView reloadData]? Come sta ricaricando la tableview? C'è un altro modo per ricaricare tableview?ios: [tableView reloadData]

Voglio aggiungere alcune righe alla fine della tableview. Come posso fare questo?

Qual è la differenza tra

[self.tableView reloadData] 

e

[self.tableView beginUpdates]; 
[self.tableView insertRowsAtIndexPaths:insertIndexPathswithRowAnimation:UITableViewRowAnimationAutomatic]; 
[self.tableView endUpdates]; 
+2

Tutto questo è ben documentato in [luoghi Standard] (http://developer.apple.com/library/ios/# documentazione/UserExperience/concettuale/TableView_iPhone/ManageInsertDeleteRow/ManageInsertDeleteRow.html # // apple_ref/doc/uid/TP40007451-CH10-SW1). –

+0

Passare attraverso apple docs: https://developer.apple.com/documentation/uikit/uitableview –

risposta

3

reloadData fa proprio questo - un aggiornamento completo della (parte visibile della) vista tabella.

Se è necessario aggiornare alcune celle, ad esempio aggiornare, inserire, rimuovere o spostare, utilizzare invece i metodi di aggiornamento appropriati. Questo animerà anche le modifiche.

1

per quanto ne so, [self.tableView reloadData] è usato più per se i dati è cambiato completamente e si desidera visualizzare la versione più recente (o forse il filtro è cambiato ecc ...)

cioè Immaginate di avere una tabella che mostra i giocatori di football e "sfiora un interruttore" per mostrare i giocatori di calcio di una squadra diversa. In questo caso si tenderà ad usare reloadData. Questo aggiornerà quindi l'intera tabella.

[self.tableView beginUpdates]; 
[self.tableView insertRowsAtIndexPaths:insertIndexPathswithRowAnimation:UITableViewRowAnimationAutomatic]; 
[self.tableView endUpdates]; 

viene utilizzato per aggiungere nuovi dati in un set corrente di dati che viene visualizzato. Questo non aggiornerà l'intero ma animerà la nuova riga nella tabella corrente.

1

Se si desidera ricaricare una sezione o alcune righe, esistono anche dei metodi per farlo.

Per righe:

[self.tableView reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation]; 

Per sezioni:

[self.tableView reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation]; 
Problemi correlati