Frage

Ich habe eine SQLite -DB mit Aufgaben. Jede Aufgabe hat ein Datum und es kann mehrere Aufgaben pro Datum geben.

Meine App lädt die Daten nur einen Monat lang in ein veränderliches Wörterbuch. Der Schlüssel jedes Wörterbuchs ist eine Zeichenfolge des Tages des Monats (1, 2, 3 ... 31). Der entsprechende Wert ist eine Reihe von Aufgaben für dieses Datum. Für jeden Tag des Monats gibt es also eine Reihe von 0 oder mehr Aufgaben.

Das veränderliche Wörterbuch wird im Root ViewController deklariert. Der Root ViewController im Schnittstellenbuilder ist die Datenquelle und den Delegieren der Tabellenansicht. Irgendwie weiß die App, dass der Root ViewController ihre Daten aus dem veränderlichen Wörterbuch erhält. Ich spezifiziere das nicht, also frage ich mich, was passieren würde, wenn es mehr als ein Wörterbuch oder vielleicht ein Wörterbuch und ein veränderliches Array gäbe? Dies funktioniert jedoch ohne zusätzliche Verkabelung. Wenn der Root ViewController die Daten in die Tabelle lädt, hält jeder Abschnitt -Header das Datum als Text und listet alle Aufgaben in einzelnen Zellen darunter. Einige Header haben keine Zellen.

Um eine Aufgabe zu ändern, habe ich einen "Eintrag" ViewController. Durch die Auswahl einer Aufgabe in der Tabelle wird der Eintragsansichtcontroller diese Aufgabeninformationen in Textfelder geladen, wo ich den Titel, das Datum, die Details oder das markierte markieren kann. Nach der Bearbeitung entlädt der Eintragsansichtcontroller, der Root (Tabelle) ViewController Reloads, die Tabellenansichtsaufrufe reloadedata und die Änderungen sind offensichtlich.

Hier ist das Problem: Wenn ich eine neue Aufgabe hinzufüge, indem ich auf die Schaltfläche + auf dem NAV -Controller klicke, führe ich zu demselben Einstiegsansichtcontroller, wo ich die Daten festlegt. Ich kehre über die gleichen Methoden wie beim Bearbeiten vorhandener Daten zum Root ViewController zurück. Für die neuen Daten wurde jedoch keine neue Zelle erstellt! Wenn ich die App schließe und wiedereröffne, werden die neuen Daten korrekt angezeigt.

Da Datenaktualisierungen und Einfügungen aus den Arrays des Wörterbuchs in die DB geschrieben werden, wenn die App schließt, bedeutet dies, dass das neue Element einem der Arrays wirklich hinzugefügt wurde.

Zusammenfassung: Bearbeiten Sie das vorhandene Array -Element, und die neuen Daten werden angezeigt, wenn die Tabelle ihre Daten neu lädt. Fügen Sie ein Array -Element hinzu und es wird ignoriert, wenn sich die Tabelle neu lädt.

Was ist los?

War es hilfreich?

Lösung

Sie können eine solche Zeile in Ihrem UitableViewController hinzufügen:

[self.tableView reloadData];

Dies wird dazu führen, dass die gesamte Uitable -View neu geladen wird. Ich glaube jedoch, dass die bevorzugte Methode lautet:

[self.tableView insertRowsAtIndexPaths: indexPaths withRowAnimation: YES];

Damit dies funktioniert, müssen Sie wissen, wo die Zeile erscheinen (das Array von NSIndexPaths).

Es kann einfacher sein, den UitableViewController aus dem "Eintrag" -AnwirtController zu aktualisieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top