iOS 5 ha infine aggiunto un metodo moveRowAtIndexPath:toIndexPath:
a UITableView
. Il problema è che chiamarlo sposta solo la riga, non la aggiorna/ridisegna. L'unico modo per farlo sembra essere trovando la cella e chiamando setNeedsDisplay direttamente. Ma questo è difficile dal momento che non si sa mai se la cella è già stata spostata o meno.moveRowAtIndexPath non aggiorna il contenuto della cella
Non è possibile chiamare reloadRowsAtIndexPaths:
, poiché non sono consentite due animazioni applicate a una singola riga all'interno dello stesso blocco beginUpdates-endUpdates
.
Ci sono alcune soluzioni alternative che riesco a pensare, come dividere l'intera cosa in 2 blocchi di animazione. Ma mi chiedo se mi manchi qualcosa, perché l'intero comportamento mi sembra strano.
Non sicuro, ma prova a guardare 'beginUpdates' e' endUpdates'. Potresti essere in grado di tenere traccia dell'indicePath che viene spostato e di apportare l'opportuna modifica alla cella in "endUpdates" se è stata spostata. – runmad
Richiamare qualsiasi nuova funzione di animazione di riga dopo che EndUpdates annulla le animazioni in sospeso per quella cella. In altre parole, la cella viene ridisegnata ma l'animazione di spostamento non viene più eseguita. Chiamare 'setNeedsDisplay' ha un effetto simile. – samvermette
Archiviato un bug report per questo: http://openradar.appspot.com/10457435 – samvermette