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);
        }
    }
È stato utile?

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();
        }
    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top