2017-03-11 2 views
0

Ich versuche ein System zu erstellen, in dem ein Benutzer einen UIViewController öffnen, diesen ViewController schließen und zum selben ViewController zurückkehren kann, wenn er ihn versehentlich geschlossen hat. Der UIViewController ist mit Daten aus dem Internet gefüllt (die sich häufig ändern) und ist ein UITableView mit langem Scrollen. Wenn der Benutzer den gleichen UIViewController jetzt erneut eingibt, gehen die Daten verloren und müssen erneut heruntergeladen werden, und ihre vorherige Position geht verloren.UIViewController speichern und bei Bedarf erneut anzeigen

In der Android-Version meiner App habe ich einen ViewPager als Hauptansicht, wobei das Hauptfenster das linke Fragment und das geöffnete Fenster das rechte Fragment ist. Wenn der Benutzer dieselbe "Einreichung" öffnet, wird das Fragment nicht erneut erstellt, und der Benutzer kehrt zum selben Bildschirm zurück. Wenn der Benutzer auf eine neue Einreichung klickt, wird das alte Fragment gelöscht und stattdessen ein neues Fragment geladen. Dies ermöglicht, dass der Status derselbe ist und der Benutzer kann zurückgehen, wenn er versehentlich aus dem Bereich geschlossen wird.

Ich denke, eine statische Version des UIViewController zu halten wäre schlechte Übung und führen zu Speicherproblemen auf der Straße, aber ich kann mir nicht vorstellen, eine andere Möglichkeit, dies zu implementieren. Irgendwelche Vorschläge würden geschätzt werden.

Antwort

0

Sie sollten bis auf Apples docs auf die Wiederherstellung View-Controller-Zustand lesen: https://developer.apple.com/library/content/featuredarticles/ViewControllerPGforiPhoneOS/PreservingandRestoringState.html

Zusätzlich Sie in Ihrer View-Controller werden die Daten angezeigt zu archivieren müssen und dearchivieren. Daher möchten Sie möglicherweise das NSCoding-Protokoll in Ihren Modellklassen implementieren. Nachdem Sie NSCoder implementiert haben, können Sie NSKeyedArchiver/NSKeyedUnarchiver verwenden, um den Status für Ihren Ansichtscontroller zu speichern und wiederherzustellen. Lesen Sie hier auf NSCoding: https://developer.apple.com/reference/foundation/nscoding

Schließlich sendet der App Delegate Benachrichtigungen, wenn Ihre App im Begriff ist, zu beenden oder in den Hintergrund zu verschieben. In dieser Klasse müssen Sie daher den gesamten Prozess zum Speichern und Wiederherstellen des Anwendungsstatus starten. Lesen Sie auf UIApplicationDelegate hier: https://developer.apple.com/reference/uikit/uiapplicationdelegate

Verwandte Themen