uitableviewcell tutorial tablas efecto crear apple iphone uitableview

iphone - tutorial - ¿Cómo puedo saber cuándo ha finalizado una animación de UITableView?



uitableview tutorial swift 4 (3)

En iOS 4 puedes hacer lo siguiente:

[UIView animateWithDuration:0.3f animations:^{ [self.tableView setEditing:YES animated:NO]; } completion:^(BOOL finished){ // Do something } ];

¿Cómo puedo saber cuándo se ha completado [UITableView setEditing: YES animated: YES]?

No quiero dar ningún contexto, porque quiero evitar que alguien me dé soluciones, que no me interesan.

Lo que quiero es llamar a lo anterior, luego tener una función separada llamada cuando se complete la animación.

Estoy editado el post para dar contexto y algunas soluciones. Originalmente establecí editar y recargar inmediatamente los datos de la tabla.

[tableView setEditing:YES animated:YES]; [tableView reloadData];

El problema es que la tabla se vuelve a cargar antes de que comience la animación, por lo que la animación nunca se ve.

Aquí hay algunas soluciones alternativas:

[tableView setEditing:YES animated:YES]; [self performSelector:@selector(ReloadTable) withObject:nil afterDelay:1.0];

Esto funciona, pero si el retraso es incorrecto, se verá mal. Así que necesito saber qué es el retraso, lo que puedo averiguar, pero no estamos seguros de que el retraso siempre será el mismo.

isEditing = YES; [tableView reloadData]; [tableView setEditing:YES animated:YES];

Esto podría funcionar, pero la tabla se comporta de manera diferente dependiendo de si estamos en modo de edición. Así que tengo que usar mi propia variable isEditing en lugar de la edición estándar de UITableView. Preferiría no tener que crear una nueva variable isEditing booleana.

[tableView setEditing:YES animated:YES]; [tableView insertRowsAtIndexPaths:path withRowAnimation:UITableViewRowAnimationTop];

Esto casi funciona bien, pero en el modo de edición, la primera fila debe tener el UITableViewCellEditingStyleInsert, mientras que las otras filas obtienen UITableViewCellEditingStyleDelete. Y con el código anterior, el estilo de edición se establece ANTES de que se agregue la fila. Por lo tanto, la segunda fila termina con UITableViewCellEditingStyleInsert.


Swift 4 versión de respuesta aceptada:

CATransaction.begin() CATransaction.setCompletionBlock { // your animation has finished } tableView.setEditing(true, animated: true) CATransaction.commit()


[CATransaction begin]; [CATransaction setCompletionBlock: ^{ // your animation has finished }]; [tableView setEditing:YES animated:YES]; [CATransaction commit];

Tenga en cuenta que setCompletionBlock debe estar en la parte superior.