Ich möchte die Statuswiederherstellung in meiner App durchführen, die keine Storyboards verwendet. Ich sehe, dass meine primäre App ViewController während der Statuswiederherstellung zweimal instanziiert wurde - wie stellen Sie sicher, dass sie nur einmal erstellt wird?
So wie ich den Ablauf verstehe, würde application:willFinishLaunchingWithOptions
und a pplication:didFinishLaunchingWithOptions
eine commonInit
-Methode verwenden, die die Anwendungen UIWindow und seinen rootViewController einrichten würde. In meinem Fall ist der rootViewController ein UINavigationController mit einer Klasse namens "MyMainViewController", die als rootViewController der UINavigation dient.
Nebenbei behandle ich auch willEncodeRestorableStateWithCoder
bzw. didDecodeRestorableStateWithCoder
. Aber bis ich zu meinem didDecodeRestorableStateWithCoder
komme, scheint es, dass ich zwei separate Instanzen von MyMainViewController erstellt habe.
Wie kann sichergestellt werden, dass nur ein UIViewController während der Wiederherstellung erstellt wird?
Reihenfolge der Anrufe während der Wiederherstellung:
Folgendes mache ich in meinem AppDelegate:
%Vor%Es gibt immer nur eine Instanz meiner Root-View-Klasse, also habe ich sie gelöst, indem ich eine Klassenmethode hinzugefügt habe, um die Klasse nur einmal zuzuweisen und zu initialisieren und den Wert andernfalls zurückzugeben:
%Vor%Wenn die Klasse nun über [UIViewController initOnce] initialisiert wird, wird immer die gleiche View-Referenz zurückgegeben, egal ob bei der Ausführung von "willFinishLaunchingWithOptions" oder "viewControllerWithRestorationIdentifierPath".
Tags und Links ios state-restoration