Excepción al eliminar fila de TableView
-
20-09-2019 - |
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);
}
}
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();
}
}