iOS 5 finalmente agregó un método moveRowAtIndexPath:toIndexPath:
al UITableView
. El problema es que al llamarlo solo mueve la fila, no la actualiza/vuelve a dibujar. La única forma de hacerlo es encontrar la celda y llamar a setNeedsDisplay directamente. Pero esto es complicado ya que nunca se sabe si la celda ya se movió o no.moveRowAtIndexPath no actualiza el contenido de la celda
Tampoco puedo llamar al reloadRowsAtIndexPaths:
, ya que no puedo tener 2 animaciones aplicadas a una sola fila dentro del mismo bloque beginUpdates-endUpdates
.
Hay algunas soluciones que se me ocurren, como dividir todo en 2 bloques de animación. Pero me pregunto si me estoy perdiendo algo, ya que todo el comportamiento me parece extraño.
No estoy seguro, pero prueba y mira 'beginUpdates' y' endUpdates'. Es posible que pueda rastrear el indexPath que se está moviendo y hacer el cambio apropiado a la celda en 'endUpdates' si se movió. – runmad
Llamar a cualquier nueva función de animación de fila después de que endUpdates cancela las animaciones pendientes para esa celda. En otras palabras, la celda se vuelve a dibujar, pero la animación de movimiento ya no se lleva a cabo. Llamar a 'setNeedsDisplay' tiene un efecto similar. – samvermette
Se ha guardado un informe de error: http://openradar.appspot.com/10457435 – samvermette