¿Alguien sugerir cuál es el problema en mi código…..

auto.modleClass.foldersAray tener un objeto y en formato tableview tienen una sección y una fila

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

{

    if (editingStyle == UITableViewCellEditingStyleDelete) {

        //Delete the row from the data source
        [self.tableview setEditing:YES animated:YES];

        [self.modleClass.foldersAray removeObjectAtIndex:indexPath.row];

        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YEs];

        [tableView reloadData];
   }
}

Estoy recibiendo el error como el siguiente.

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of rows in section 0.  The number of rows contained in an existing section after the update (1) must be equal to the number of rows contained in that section before the update (1), plus or minus the number of rows inserted or deleted from that section (0 inserted, 1 deleted) and plus or minus the number of rows moved into or out of that section (0 moved in, 0 moved out).'
InformationsquelleAutor user1997077 | 2013-02-22

5 Comentarios

  1. 3

    Hacer como esta,

    -(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
    {
    
          if (editingStyle == UITableViewCellEditingStyleDelete) {
    
              [self.modleClass.foldersAray removeObjectAtIndex:indexPath.row];
    
              [tableView reloadData];
          }
    }

    es más que suficiente………

    • me gusta eso, pero la célula no se eliminan…se muestra el mismo estado de cuando hice clic en el botón editar…
  2. 2

    Si su formato tableview se basa en la foldersAray, luego de la eliminación de un objeto a partir de esta matriz y la recarga del formato tableview resultará en la eliminación de esta celda.
    Usted puede quitar la línea:

    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YEs];
  3. 1

    Este error significa que usted debe actualizar el origen de datos (array con los datos, diccionario o lo que uses)

    Por ejemplo:
    Usted tiene 5 células antes de eliminar y 5 de objeto en dataArray. Antes de llamar a deleteRowsAtIndexPaths: debemos quitar el objeto de dataArray, que se asocia con este celular y sólo entonces llamada deleteRowsAtIndexPaths:. También en lugar de utilizar [tableView reloadData], uso

    [tableView beginUpdates];
    [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
    [tableView endUpdates];

    P. S. veo, que te quite el objeto de su origen de datos, a fin de comprobar con cuidado, tal vez eche de menos algo

  4. 1

    Si quieres animación a probar esto, si usted no desea que la animación usar @Mountain Lion de la respuesta.

     -(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle
     forRowAtIndexPath:(NSIndexPath *)indexPath  {
    
           if (editingStyle == UITableViewCellEditingStyleDelete) 
             {
                 [self.modleClass.foldersAray removeObjectAtIndex:indexPath.row];
                 [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]withRowAnimation:UITableViewRowAnimationFade];
           } 
     }

    Y si tiene el botón editar en la navegación, usted debe llamar a

    [auto.formato tableview setEditing:SI animado:YES];

    dentro de su método para empezar a editar.

  5. 1

    SI la memoria se necesita no importa para ti… entonces usted puede eliminar drásticamente (ocultar) de la célula mediante el ajuste de altura a 0.

    -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        if (indexPath.row%2) {
            return 0;
        }
        return 100;
    }

    P. S: por encima de código de prueba dramáticamente eliminar alternativo de las células.

Dejar respuesta

Please enter your comment!
Please enter your name here