2012-10-04 14 views
5

¿[tableView reloadData] afecta el rendimiento en iOS? ¿Cuál es [tableView reloadData]? ¿Cómo está recargando la tabla vista? ¿Hay alguna otra forma de volver a cargar tableview?ios: [tableView reloadData]

Quiero agregar algunas filas al final de la tabla. ¿Cómo puedo hacer esto?

¿Cuál es la diferencia entre

[self.tableView reloadData] 

y

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

Todo esto está bien documentado en la [lugares estándar] (http://developer.apple.com/library/ios/# documentation/UserExperience/Conceptual/TableView_iPhone/ManageInsertDeleteRow/ManageInsertDeleteRow.html # // apple_ref/doc/uid/TP40007451-CH10-SW1). –

+0

Ir a través de Apple Docs: https://developer.apple.com/documentation/uikit/uitableview –

Respuesta

3

reloadData hace exactamente eso - una actualización completa de la (parte visible de la) vista de tabla.

Si solo necesita actualizar ciertas celdas, es decir, actualizar, insertar, eliminar o mover, use los métodos de actualización adecuados. Esto animará los cambios.

1

yo sepa, [self.tableView reloadData] se utiliza más por si sus datos han cambiado por completo y que desea mostrar la versión más reciente (o tal vez que el filtro ha cambiado etc ...)

es decir Imagine que tiene una mesa que muestra jugadores de fútbol y "presiona un interruptor" para mostrar a los jugadores de fútbol de un equipo diferente. En este caso, tenderías a usar reloadData. Esto actualizará toda la tabla.

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

se utiliza para agregar nuevos datos en un conjunto actual de datos que se muestran. Esto no actualizará todo pero animará la nueva fila en la tabla actual.

1

Si desea volver a cargar una o algunas filas, también existen métodos para hacerlo.

Para las filas:

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

Para secciones:

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