reinizializzare vista radice in IOS
-
27-10-2019 - |
Domanda
Si potrebbe pensare che la ricerca di una risposta a questa domanda, e forse ho perso, ma qui va.
La mia app contiene alcune viste di cui la vista principale visualizza un mazzo di informazioni che raccoglie progressivamente da un utente, il microfono e la telecamera e attraverso gli altri punti di vista. E 'tutto dovrebbe finire con una grande climatico "pulsante di invio." A quel punto i dati vengono memorizzati in modo sicuro (attualmente in un database SQL ... ma questa è un'altra storia).
Una volta fatto ciò, voglio che l'intero processo di ricominciare quali mezzi reinitializing la vista ad uno stato vergine. In Android, posso buttare un nuovo intento e distruggere quello vecchio.
I raccogliere dovrei iniziare con il delegato app (vedi codice qui sotto). Ora la domanda è: dove posso andare da qui?
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.mainViewController = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];
self.window.rootViewController = self.mainViewController;
self.mainViewController.managedObjectContext = self.managedObjectContext;
[self.window makeKeyAndVisible];
return YES;
}
Soluzione 2
Così, dopo una congrua parte di scavare in giro, e tentativi ed errori. Ho trovato qualcosa che funziona il modo in cui voglio che.
ho creato una funzione speciale nel delegato applicazione che esegue il seguente:
- (void) newScreen
{
self.mainViewController = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];
self.window.rootViewController = self.mainViewController;
self.mainViewController.managedObjectContext = self.managedObjectContext;
}
Poi dal controllore vista principale chiamo quella funzione
[(AppDelegate *)[[UIApplication sharedApplication] delegate] newScreen];
Facile come bere un bicchiere ...
Altri suggerimenti
I creerebbe il RootViewController come la mia posizione di partenza. Quando i carichi RootViewController vorrei inizializzare e aggiungere il mio primo processo di immissione dei dati. In questo modo, quando ho colpito presento io chiamerei popToRootViewController, e quando i carichi rootViewContoller sarebbe inizializzare e caricare di nuovo il primo processo di immissione dei dati.