Eccezione quando si eliminano riga TableView
-
20-09-2019 - |
Domanda
Ogni volta che mi ha colpito il codice DeleteRows, ottengo un'eccezione che mi dice che il numero di righe prima e dopo l'aggiornamento deve essere lo stesso. Ecco il testo ufficiale:
Motivo: aggiornamento non valida: numero non valido di righe nella sezione 0. Il numero di righe contenute in una sezione esistente dopo l'aggiornamento (3) deve essere uguale al numero di righe contenute in tale sezione prima dell'aggiornamento (3), più o meno il numero di righe inserite o cancellati da tale sezione (0 inserita, 1 soppresso).
Il mio codice è:
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);
}
}
Soluzione
Probabilmente È necessario modificare il numero restituito in
- (NSInteger)tableView:(UITableView *)aTableView numberOfRowsInSection:(NSInteger)section
per il indexPath.section
di essere uno inferiore rispetto a prima della cancellazione.
Come risposto qui: Elimina riga dal UITableView crash
Altri suggerimenti
Quello che ho trovato che ha funzionato per me era da rimuovere tableView.DeleteRows (new [] {} indexPath, UITableViewRowAnimation.Fade); Il tuo metodo dovrebbe essere simile a questo.
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();
}
}