ich entwickle aktuell eine iPad-Variante von meiner iPhone-App und stehe nun vor folgendem Problem:
In meiner App nutze ich eine TableView um Daten aus einem CoreData-Modell anzuzeigen. Über eine "Bearbeiten"-Schaltfläche können neue Datensätze hinzugefügt oder nicht mehr benötigte gelöscht werden. Beim Hinzufügen rufe ich einen UIViewController über folgenden Code auf:
In diesem UIViewController füge ich anschließend einen neuen Datensatz in mein CoreData-Modell ein. Anschließend blende ich den TableView wieder über folgende Zeile im UIViewController ein:
Nun das Problem: Der TableView wird nicht aktualisiert! Verlasse ich nun noch den "Bearbeiten"-Modus des TableView per Klick auf die gleichnamige Schaltfläche, stürzt die App mit folgender Fehlermeldung ab:
2011-06-07 20:06:06.794 Writing App[796:207] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of rows in section 3. The number of rows contained in an existing section after the update (2) must be equal to the number of rows contained in that section before the update (2), plus or minus the number of rows inserted or deleted from that section (0 inserted, 1 deleted).'
Der Absturz erfolgt in folgender Methode an der fett markierten Stelle:
Leider weiß ich an dieser Stelle nicht, wie ich das Problem lösen kann. Auffällig ist noch folgendes: Wenn ich beim Aufruf des UIViewControllers (siehe oben) die fett markierte Zeile ([addKapitelController setModalPresentationStyle:UIModalPresentationFormSheet];) auskommentiere (und damit der UIViewController im Vollbild aufgerufen wird) tritt dieses Problem nicht auf und die TableView wird korrekt aktualisiert!
Bereits im Voraus vielen Dank für eure Unterstützung, ich weiß aktuell einfach nicht weiter.
Beste Grüße, Thomas
PS: Solltet ihr weitere Infos benötigen gebt mir einfach Bescheid, dann poste ich sie entsprechend!
Hast Du dein Modell angepasst? Die Fehlermeldung sagt, dass nach dem Editieren eine Zeile entfernt wurde, aber immer noch zwei Zeilen von der DataSource geliefert werden. Aus dem Modell müssen die Zeilen auch entfernt werden, nicht nur aus der TableView.
Grundsätzlich würde ich die Tabellenänderungen eher in die Delegatemethode