Pregunta

Cada vez que me golpeó el código DeleteRows, consigo una excepción que me dice que el número de filas antes y después de la actualización tiene por qué ser el mismo. Aquí está el texto oficial:

Motivo: actualización no válido: número no válido de filas en la sección 0. El número de filas contenida en una sección existente después de la actualización (3) debe ser igual al número de filas contenida en esa sección antes de la actualización (3), más o menos el número de filas insertadas o eliminados desde dicha sección (0 insertado, 1 suprime).

Mi código es:

        public override void CommitEditingStyle (UITableView tableView, UITableViewCellEditingStyle editingStyle, NSIndexPath indexPath)
    {
        if (editingStyle == UITableViewCellEditingStyle.Delete)
        {
            tableView.DeleteRows(new [] { indexPath }, UITableViewRowAnimation.Fade);
    // Remove the step from the set of calculations
    _calculation.Steps.RemoveAt(indexPath.Row);
        }
    }
¿Fue útil?

Solución

Es probable que tenga que cambiar el número devuelto en

- (NSInteger)tableView:(UITableView *)aTableView numberOfRowsInSection:(NSInteger)section

para la indexPath.section a ser uno más bajo que antes de la eliminación.

Como contestado aquí: Eliminar fila de UITableView se estrella

Otros consejos

Lo que encontré que trabajó para mí era quitar tableView.DeleteRows (nuevo [] {indexPath}, UITableViewRowAnimation.Fade); Su método debe ser algo como esto.

public override void CommitEditingStyle (UITableView tableView, UITableViewCellEditingStyle editingStyle, NSIndexPath indexPath)
    {
        if (editingStyle == UITableViewCellEditingStyle.Delete)
        {
          // Remove the step from the set of calculations
           _calculation.Steps.RemoveAt(indexPath.Row);
           tableView.reloadData();
        }
    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top