2016-07-26 14 views
0

Ich habe vier ViewControllers in meiner Anwendung. Nehmen wir nun an, der Benutzer befindet sich derzeit auf dem zweiten ViewController und beendet die Anwendung.Speichern der Anwendung in ios mit Swift

Jetzt wie kann ich diesen Zustand speichern, so dass, wenn Benutzer die Anwendung erneut öffnen, er mit dem zweiten viewContoller präsentiert werden sollte, und in der Lage sein sollte, zurück zum ersten viewContoller auch zu navigieren.

Die Lösung, die ich in meinem Kopf habe, ist einfach eine Variable des aktuellen Bildschirms in userDefaults zu speichern und diesen ViewController dann zu einem rootViewController zu machen. Aber ich weiß, es ist nicht die richtige Lösung und ich werde auch die Navigation verlieren. Bitte helfen Sie mir, danke.

+0

Ich empfehle, 'NSURL' in' NSUserDefaults' zu schreiben, das zu jedem Navigationssteuerungs-Pfad passt, der detailliert beschreibt, wie der aktuelle Status erreicht wird. –

+0

@AbhiBeckert kannst du bitte ausführlich in Antwort beschreiben? – Byte

+0

Ich habe keine Zeit, eine vollständige Antwort zu schreiben, vielleicht können Sie das tun? Aber in einer Musik-App könnte die URL beispielsweise "https: // my-music-app.com/playlists/playlist-name/song-name" lauten, um den "Jetzt spielenden" Controller für ein bestimmtes Lied mit der Rückseite anzuzeigen Schaltfläche, die Sie zu einer Wiedergabeliste mit diesem Titel und einer weiteren Zurück-Schaltfläche führt, die Sie zur Liste der Wiedergabelisten führt. Diese URL kann für andere Dinge verwendet werden, z. B. für eine Schaltfläche zum Teilen in der App. Möglicherweise verfügen Sie auch über einen tatsächlichen Webserver, der die URL ebenfalls verarbeiten kann, für Benutzer, bei denen die App nicht installiert ist. –

Antwort

0

Wenn Sie noch nicht haben, erstellen Sie eine Klasse BaseViewController genannt, die von allen UIViewControllers verlängert werden sollte:

class BaseViewController: UIViewController { 

    override func viewDidAppear(animated: Bool) { 
     super.viewDidAppear(animated) 

     // always remember last controller shown 
     NSUserDefaults.standardUserDefaults.setObject(classForCoder(), forKey: "lastController") 
    } 
} 

Sie können Controller-Klasse Namen, eine int Kennung oder somenthing Sie speichern. Dann in App-Delegate beim Start der Anwendung können Sie diesen Wert lesen und Ihre benutzerdefinierte Logik, um den richtigen Controller zu öffnen.

Wenn der Benutzer zurückkehrt, leiten Sie den UIViewController entsprechend Ihrem Anwendungsfluss um.

Verwandte Themen