2016-11-11 6 views
0

ich bereits viele Themen zu diesem Thema gesehen, aber ich habe immer noch den Fehler ...App stürzt ab, wenn ich tableview.deleteRows verwenden möchten (unter:, mit:)

Hier ist mein Code in der Tableview Delegatmethode (wird aufgerufen, wenn der Benutzer Swipe und klicken Sie auf die Schaltfläche löschen auf der Zelle):

self.tableView.beginUpdates() 

if self.data[sectionType]!.isEmpty { 
    self.data.removeValue(forKey: sectionType) 
} 

self.tableView.deleteRows(at: [indexPath], with: .fade) 
self.tableView.endUpdates() 

ich die numberOfSections Delegatmethode wie diese umgesetzt haben:

func numberOfSections(in tableView: UITableView) -> Int { 
    return data.count 
} 

und das ist der Fehler Ich bekomme:

*** Beenden app aufgrund nicht abgefangene Ausnahme ‚NSInternalInconsistencyException‘, Grund: ‚UITableView interner Fehler: keine neuen Kartenausschnitt mit altem Abschnitt Zählung generieren: 1 und neuem Abschnitt Zahl: 0‘

Ich erhalte den gleichen Fehler, wenn ich deleteRows (in tableView) Methode durch reloadData() ...

ersetze ich mit Haltepunkt überprüft, gebe ich in die Wenn-Bedingung, wenn der Fehler aufgetreten ist. Also werden die Daten aktualisiert (0 Element nach dem Aufruf removeValue()) und ich rufe die Methode deleteRows auf.

Danke für Ihre Hilfe.

+2

Haben Sie die numberOfRowsInSection-Methode verwendet? –

Antwort

0

Möchten Sie eine Zeile oder einen Abschnitt löschen?

Schlägt vor, dass Sie versuchen, einen Abschnitt zu löschen. Wenn Sie es sind, sollten von etwas dieser Art folgen:

let indexSet = NSMutableIndexSet() 
indexSet.addIndex(section) 
self.tableView.deleteSections(indexSet, withRowAnimation: .fade) 

Wenn Sie eine Zeile zu löschen versuchen dann das Oberteil so zu etwas ändern:

if self.data[sectionType]!.isEmpty { 
    self.data[sectionType].remove(at: rowToRemove) 
} 
+0

Sie haben völlig Recht! Ich wollte einen Abschnitt löschen. Ich habe nicht die richtige Methode von UITableView verwendet. deleteSections() -Methode hat mein Problem behoben :) Danke !! –

0

Es sieht aus wie könnte man lösche alle deine Zeilen in der Sektion, anstatt die eine Zelle.

Ich nehme an, self.data ist ein Wörterbuch, in dem die Schlüssel Abschnitte sind und die Werte sind Arrays, die Zellinformationen enthalten. Anstatt den Schlüssel zum Wörterbuch zu löschen. Wie Sie hier haben ...

Sie können auf den Abschnitt zugreifen und nur diese Zeile entfernen. So etwas wie dies ...

data[sectionType]?.remove(at: indexPath.row) 

Ich gehe davon aus, den Rückgabewert Sie für das Verfahren haben numberOfRowsInSection: ist etwas Ähnliches ...

return data[sectionType]?.count 

Hope this in someway hilft.

Verwandte Themen