Question

Chaque fois que je frappe le code DeleteRows, je reçois une exception en me disant que le nombre de lignes avant et après la mise à jour doivent être les mêmes. Voici le texte officiel:

Motif: mise à jour non valide: nombre incorrect de lignes dans la section 0. Le nombre de lignes contenues dans une section existante après la mise à jour (3) doit être égal au nombre de lignes contenues dans cet article avant la mise à jour (3), plus ou moins le nombre de lignes insérées ou supprimées de cette section (0 inséré, supprimé 1).

Mon code est:

        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);
        }
    }
Était-ce utile?

La solution

Vous avez probablement besoin de changer le nombre de retour dans

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

pour la indexPath.section soit inférieure à une avant la suppression.

répond ici: Supprimer ligne de uitableview se bloque

Autres conseils

Ce que je trouve qui a fonctionné pour moi était d'enlever tableView.DeleteRows (nouveau [] {} indexPath, UITableViewRowAnimation.Fade); Votre méthode devrait ressembler à ceci.

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();
        }
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top