2009-05-25 11 views
1

Momentan erstelle ich 2 Ansichten und auf der ersten Ansicht gibt es eine nächste Schaltfläche, nach dem Klicken wird es die zweite Ansicht.Saving View State iphone sdk

Dann in der zweiten Ansicht, ich setze einen Wert in der Bezeichnung und wenn ich zurückklicke, wird es zurück zur ersten Ansicht gehen.

Problem: Jetzt bin ich wieder in der ersten Ansicht, wenn ich erneut auf die nächste Schaltfläche klicke, ist der Label-Wert in der zweiten Ansicht verloren gegangen.

Frage: Wie kann ich den Zustand speichern, so dass, wenn ich auf den nächsten Knopf klicke, er feststellen wird, dass das Etikett vorher eingestellt ist und als solcher den vorherigen Wert wieder anzeigen.

Antwort

1

Kommt drauf an. Es gibt viele Wege.

Ich erwarte, dass jedes Mal, wenn Sie die zweite Ansicht auf den Bildschirm schieben, Sie eine neue Instanz davon erstellen. In jedem Fall sollten Sie, unabhängig davon, ob Sie es sind oder nicht, den Wert der Beschriftung im Modell speichern, anstatt zu erwarten, dass die Ansicht Daten speichert (siehe: MVC-Entwurfsmuster). Stellen Sie dann in der -viewDidLoad:-Funktion des zweiten View-Controllers den Wert des Labels auf den vorherigen Wert ein.

+0

Hallo danke für die reaktionsschnelle Antwort. Ya, ich schaffe es zu tun, was Sie vorgeschlagen, die den Wert in ViewDidLoad Funktion festgelegt ist. Auch gerne von Ihnen zu verstehen, was sind die anderen Möglichkeiten, die Sie erwähnen? Ich frage mich, ob wir im Allgemeinen eine Menge Daten zu sagen haben, gibt es eine effizientere Möglichkeiten? –

1

MVC ist dein Freund.

Ihre Ansicht zeigt nur Daten an, die im Modell gespeichert sind. Wenn Sie also Personendaten anzeigen, werden die Daten in einem Personenobjekt gespeichert. Ihre Ansicht würde einen Verweis auf das angezeigte Objekt haben, damit sie Daten lesen kann. In der Ansicht werden keine Daten zu Personenobjekten über den Controller festgelegt. Ihr Controller überbrückt Ihr Modell (Daten) und View, indem Referenzen auf beide gehalten werden.

Der Benutzer klickt auf ein angezeigtes Objekt (z. B. den Benutzernamen ändern). Dies wird vom Controller übernommen, der das Modell der Person mit neuem Namen aktualisiert. Sobald die Aktion abgeschlossen ist, fordert der Controller die Anzeige auf, um die Daten im Modell erneut anzuzeigen.

Werfen Sie einen Blick auf Model-View-Controller und UIViewController in Apples Referenzen.