2009-05-27 14 views
16

Aquí es lo que he llegado con:¿Cómo borrar una fila en UITableView de forma manual?

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:1]; // my table view has 2 sections 
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationTop]; 

Cada vez que generar y ejecutar, se lanza la siguiente excepción:

actualización no válido: número no válido de filas en la sección 0. El número de las filas contenidas en una sección existente después de la actualización deben ser iguales a la cantidad de filas contenidas en esa sección antes de la actualización, más o menos el número de filas agregadas o eliminadas de esa sección.

Es un poco confuso. La sección está configurada en 1, pero la excepción dice que es 0.

+4

querido su línea NSIndexPath * indexPath = [NSIndexPath indexPathForRow: 0 insection: 1] ;. +1 para ti;) – oberbaum

Respuesta

29

Me di cuenta.

Además del código antes mencionado, también necesito hacer cambios a la fuente de datos

[items removeObjectAtIndex:0]; 
+2

Eso es correcto. –

+8

Para cualquier persona que haya estado recibiendo el error, como yo, declarado en el OP; por favor, asegúrese de alterar su modelo de datos 'antes 'de alterar los contenidos de UITableView. – Sean

5
- (IBAction)deleteCustomCellWithUIButton:(id)sender 
{ 
    NSLog(@"Message From Custom Cell Received"); 
    NSIndexPath *indexPath = [self.myTableView indexPathForCell:(UITableViewCell *)[[[sender superview] superview] superview]]; 
    NSUInteger row = [indexPath row]; 
    [self.myDataArray removeObjectAtIndex:row]; 
    [self.myTableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; 
} 
+1

Recomiendo agregar '[self.myTableView beginUpdates];' antes de comenzar a cambiar. Y '[self.myTableView endUpdates];' una vez que haya terminado. – thedp

Cuestiones relacionadas