Attualmente non riesco a capire cosa devo utilizzare per salvare e ripristinare lo stato dell'app.Salvare e ripristinare stack UINavigation per riconnettersi
Sto utilizzando uno storyboard e ho un bel po 'di ViewControllers, e voglio salvare tutti i miei stack di navigazione quando l'app viene terminata per poter ripristinare tutta la navigazione quando l'utente riavvia l'applicazione.
Sto utilizzando un UINavigationController
con un altro UINavigationController al suo interno solo per informazioni.
ho trovato questo e leggere questo più e più volte: https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/PreservingandRestoringState.html#//apple_ref/doc/uid/TP40007457-CH28-SW34
(Obbligatorio) Assegnare identificatori restauro per i controller di vista di cui si desidera preservare la configurazione; vedere Tagging View Controllers for Preservation.
(obbligatorio) Indicare a iOS come creare o individuare nuovi oggetti del controller di visualizzazione in fase di avvio; consultare Ripristino dei controller di visualizzazione in fase di avvio.
Poi ho aggiunto un RestorationId
su tutti i miei ViewControllers ma non capisco che cosa devo fare per la seconda parte, come quando aggiungo viewControllerWithRestorationIdentifierPath
metodi che non passano all'interno.
Ho anche cercato di salvare il navigation.viewcontrollers
nelle NSUserDefaults al fine di utilizzare di nuovo quando l'utente riavviare l'applicazione utilizzando il codice:
+(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];
}
Ma quando torno nelle statistiche Apple App da raccontare io che il vincolo non viene rispettato e che l'app si blocca e poi quando aggiungo viewControllers nello stack della mia navigazione si blocca :)
Qualsiasi consiglio o aiuto sarebbe molto apprezzato. Grazie mille
Avete implementato 'encodeRestorableStateWithCoder:' e 'decodeRestorableStateWithCoder:'? Puoi anche controllare questo tutorial. Ti aiuterà. http://www.techotopia.com/index.php/An_iOS_6_iPhone_State_Preservation_and_Restoration_Tutorial –
Ho fatto ora un restauro, ma come ho detto voglio fare lo stesso processo dopo aver ucciso l'applicazione da solo, ma quando l'utente lo uccide, il il ripristino non viene avviato alle prossime partenze, quindi c'è un modo per forzarlo? –
come per la precedente vista di ripristino. I controllori dichiarano che non funzionerà mentre si riavvia l'applicazione da una fase di estensione. Lo stato di navigazione di ripristino predefinito di Apple non funzionerà in questo caso, ma puoi fare lo stesso con il salvataggio di questo stato utente nel DB e mentre l'app si sta aprendo in quel momento, ripristinarlo manualmente programmando la logica in modo diverso da una soluzione del problema precedente, ma questa logica funziona solo con 3-4 tasti di navigazione se hai 7-8 tasti di navigazione che non funzionerà. – CodeChanger