Ich habe momentan Schwierigkeiten zu verstehen, was ich zum Speichern und Wiederherstellen meines App-Status verwenden soll.Speichern und Wiederherstellen von UINavigation Stacks zum erneuten Verbinden
Ich verwende ein Storyboard und ich habe einige ViewControllers, und ich möchte alle meine Navigationsstapel speichern, wenn die App beendet wird, um die gesamte Navigation wiederherzustellen, wenn der Benutzer die Anwendung neu startet.
Ich verwende eine UINavigationController
mit einem anderen UINavigationController innerhalb es nur für Informationen.
Ich fand diese und diese über gelesen und über: https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/PreservingandRestoringState.html#//apple_ref/doc/uid/TP40007457-CH28-SW34
(Erforderlich) wollen Restaurierung Identifikatoren zu den View-Controller, deren Konfiguration Weisen Sie erhalten; Siehe Tagging View Controller für die Bewahrung.
(Erforderlich) Sag iOS, wie neue View-Controller-Objekte zum Zeitpunkt des Starts erstellt oder lokalisiert werden sollen. Weitere Informationen finden Sie unter Wiederherstellen von View Controllern zum Zeitpunkt des Starts.
Dann habe ich ein RestorationId
auf alle meine Viewcontrollers, aber ich verstehe nicht, was ich für den zweiten Teil tun sollte, wenn ich hinzufügen viewControllerWithRestorationIdentifierPath
Methoden, die ich nicht nach innen passieren.
Ich habe auch versucht die navigation.viewcontrollers
in die NSUserDefaults zu speichern, um sie wieder zu verwenden, wenn der Benutzer mit dem Code der App neu starten:
+(NSArray *) getNavStatus
{
NSUserDefaults *preferences = [NSUserDefaults standardUserDefaults];
id objectSaved;
if((objectSaved = [preferences objectForKey:navStatusKey]) != nil)
return [NSKeyedUnarchiver unarchiveObjectWithData:objectSaved];
else
return nil;
}
+(BOOL) saveNavStatus:(UINavigationController *) nav
{
NSUserDefaults *preferences = [NSUserDefaults standardUserDefaults];
NSData *encodedObject = [NSKeyedArchiver archivedDataWithRootObject:nav.viewControllers];
[preferences setObject:encodedObject forKey:navStatusKey];
// Save to disk
return [preferences synchronize];
}
Aber wenn ich in den App-Apfel-Statistik zurück zu sagen, Ich, dass die Einschränkung nicht respektiert wird und dass die App abstürzt und dann, wenn ich die ViewControllers in den Stack meiner Navigation fügt es Absturz :)
Alle Tipps oder Hilfe wäre sehr geschätzt. Vielen Dank
Haben Sie 'encodeRestorableStateWithCoder:' und 'decodeRestorableStateWithCoder:'? Sie können dieses Tutorial auch überprüfen. Es wird dir helfen. http://www.techotopia.com/index.php/An_iOS_6_iPhone_State_Preservation_and_Restoration_Tutorial –
Ich habe jetzt kann ich etwas Wiederherstellung, aber wie ich sagte, ich möchte den gleichen Prozess nach dem Töten der Anwendung selbst, aber wenn der Benutzer es zu töten, die Die Wiederherstellung wird nicht bei den nächsten Starts gestartet. Gibt es eine Möglichkeit, sie zu erzwingen? –
wie oben wiederherstellen controllers Zustand wird nicht funktionieren, während Sie die Anwendung von Stretch neu starten. Apples Standard-Wiederherstellung Navigationsstatus wird in diesem Fall nicht funktionieren, aber Sie können dasselbe mit dem Speichern dieses Benutzerstatus in der DB tun und während App zu diesem Zeitpunkt öffnet es durch manuelle Programmierung Logik anders als gibt es keine Lösung der oben genannten Problem, aber diese Logik ist nur arbeiten mit 3-4 Navigation drücken, wenn Sie 7-8 Navigation drücken, als es nicht funktioniert. – CodeChanger