Frage

Jedes Mal, wenn ich den DeleteRows Code getroffen, erhalte ich eine Ausnahme mir zu sagen, dass die Anzahl der Zeilen vor und nach dem Update muss das gleiche sein. Hier ist der offizielle Text:

Grund: Ungültige Update: ungültige Anzahl von Zeilen in Abschnitt 0. Die Anzahl der Zeilen in einem vorhandenen Abschnitt nach dem Update enthalten ist (3) muss die Anzahl der Zeilen gleich sein enthielt in diesem Abschnitt vor dem Update (3), plus oder minus die Anzahl der Zeilen aus diesem Abschnitt eingefügt oder gelöscht (0 eingefügt, gelöscht 1).

Mein Code ist:

        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);
        }
    }
War es hilfreich?

Lösung

Sie müssen wahrscheinlich die Nummer ändern zurück in

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

für die indexPath.section sein, eine niedriger als vor der Löschung.

Wie beantwortet hier: Zeile löschen von UITableView Abstürze

Andere Tipps

Was ich fand, dass für mich gearbeitet wurde entfernen tableView.DeleteRows (new [] {} indexPath, UITableViewRowAnimation.Fade); Ihre Methode sollte in etwa so aussehen.

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();
        }
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top