2010-02-22 10 views

Respuesta

7

Importante: Esta respuesta supone iPhone OS 3.x. See the answer above para iOS 5.x

No sé cuál es el "efecto de animación genial como en la aplicación Lista de compras de supermercado". No todos tienen esa aplicación.


Las filas no se pueden mover mediante programación.

Sin embargo, puede insertar y eliminar simultáneamente una fila para simular un movimiento.

[tableView beginUpdates]; 
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:rowToMove] 
       withRowAnimation:UITableViewRowAnimationLeft]; 
[tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPathToMoveTo] 
       withRowAnimation:UITableViewRowAnimationLeft]; 
// update your dataSource as well. 
[tableView endUpdates]; 
+0

Kenny, El efecto que estaba hablando es una animación fila cayendo, simplemente como arrastrándolo con un dedo cuando una mesa está en modo de reorganización. Me pregunto cómo se hizo. Pienso en dibujar el contenido de la celda en una uiimagen semi transparente y luego mover la imagen con la animación a la ubicación deseada, pero no estoy seguro de que sea la mejor solución. – Alex

+0

¿Encontró una solución? Tengo una pregunta similar: http://stackoverflow.com/questions/5112588/how-make-the-same-animation-like-uitableview-reorder-of-cells & http://stackoverflow.com/questions/5315990/ how-copy-cells-between-tables-as-the-pulse-app – mamcx

+0

tal vez solo necesite el efecto RowAnimation para: UITableViewRowAnimationBottom – ugiflezet

2

Esto es un poco similar a lo que he hecho para permitir arrastrar y soltar desde una ScrollView a otro.

Querrá crear una celda duplicada/ficticia (para efectos visuales), luego eliminar la celda original, animar el duplicado, luego insertarlo en la parte inferior y finalmente eliminar la celda duplicada/ficticia.

26

En IOS 5 esto se puede hacer con la siguiente UITableView selector:

- (void)moveRowAtIndexPath:(NSIndexPath *)indexPath toIndexPath:(NSIndexPath *)newIndexPath 

Por ejemplo:

[self.tableView moveRowAtIndexPath:indexPath toIndexPath:[NSIndexPath indexPathForRow:[items count] - 1 inSection:1]]; 
+1

¡genial! enlace al doc selector: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableView_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40006943-CH3-SW55 – yonel

+0

Lo obvio La siguiente pregunta es cómo descubrir estos IndexPaths después de ordenar una matriz ... Tal vez debería hacer una copia ordenada de la matriz y averiguar los índices de antes y después de cada elemento? – devios1

Cuestiones relacionadas