Recargar celda de vista de tabla con animation (Swift)

¿Hay alguna forma de recargar células UITableView específicas con múltiples secciones con animaciones?

He estado usando:

 self.TheTableView.reloadSections(NSIndexSet(index: 1), withRowAnimation: UITableViewRowAnimation.Right) 

Sin embargo, esto anima todas las celdas de la sección. La otra opción es usar:

 self.TheTableView.reloadRowsAtIndexPaths(<#indexPaths: [AnyObject]#>, withRowAnimation: <#UITableViewRowAnimation#>) 

EDITAR:

Después de usar reloadRowsAtIndexPaths

Terminar la aplicación debido a la exception no detectada 'NSInternalInconsistencyException', motivo: 'Actualización no válida: número inválido de filas en la sección 1. La cantidad de filas contenidas en una sección existente después de la actualización (5) debe ser igual al número de filas que contiene sección anterior a la actualización (4), más o less el número de filas insertadas o eliminadas de esa sección (0 insertadas, 0 eliminadas) y más o less el número de filas movidas dentro o fuera de esa sección (0 movidas, 0 movidas fuera).'

Tratando de encontrar una manera fácil de volver a cargar una vista de tabla agregando objects a una matriz.

Llamar a TheTableView.reloadData () antes de que reloadRowsAtIndexPaths funcione, pero la animation es glitchy. ¿Hay otro enfoque?

¿Por qué no recargar las celdas directamente? La ruta de índice contiene la sección y la fila, así que solo realice un seguimiento de qué sección desea volver a cargar y rellene los índices en esa matriz.

 var indexPath1 = NSIndexPath(forRow: 1, inSection: 1) var indexPath2 = NSIndexPath(forRow: 1, inSection: 2) self.tableView.reloadRowsAtIndexPaths([indexPath1, indexPath2], withRowAnimation: UITableViewRowAnimation.Automatic) 

Según su comentario, está buscando cambiar su matriz y hacer que tableView se vea animado en los cambios. Si ese es el caso, debería considerar usar beginUpdates () y endUpdates () para UITableViews o incluso un NSFetchedResultsController, por lo que maneja todas las animaciones de actualización de manera limpia.

 self.tableView.beginUpdates() // Insert or delete rows self.tableView.endUpdates() 

Recomendaría utilizar NSFetchedResultsController si está utilizando Core Data, ya que simplifica todo este process. De lo contrario, debes manejar los cambios tú mismo. En otras palabras, si su matriz cambia, debe quitar manualmente o insert filas en la vista de tabla usando beginUpdates () y endUpdates (). Si no está utilizando datos básicos, estudie esto para comprender cómo se maneja todo.

En Swift 3.0

Podemos volver a cargar una fila particular de una sección particular en vista de tabla

 let indexPath = IndexPath(item: 2, section: 0) self.tableView.reloadRows(at: [indexPath], with: .automatic) 

Si desea recargar una sola sección en swift 3.0, puede hacer esto:

 tableView.reloadSections(IndexSet(integer: 0), with: .automatic) 

Definir IndexSet en documento oficial:

Administra un Set de valores integers, que se utilizan comúnmente como tipo de índice en Cocoa API. El range de valores integers válidos está en (0, INT_MAX-1). Cualquier cosa fuera de este range es un error.

por lo que IndexSet se establece sobre el índice, simplemente poniendo algunos valores Int en []

 // for reload one section tableView.reloadSections([section], with: .automatic) // or using like this tableView.reloadSections(IndexSet(integer: section), with: .automatic) // for reload multi sections tableView.reloadSections([1, 2, 3, section], with: .automatic)