2016-06-24 15 views
10

ho integrato il MMDrawerController Biblioteca in un'applicazione iOS e ora ho l'obbligo di ripristinare lo stato di applicazione anche se l'applicazione viene ucciso in background (Solo quando l'applicazione è entrare da dal primo piano allo sfondo), funziona perfettamente con la normale applicazione di navigazione ma quando cambio Navigazione utilizzando l'opzione "setCenterViewController" nella mia applicazione, il ripristino non funziona come previsto e ho seguito tutte le istruzioni fornite in questo collegamento: "https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/PreservingandRestoringState.html"stato di conservazione ed emissione Restauro in iOS utilizzando MMDrawer

Ho usato setCenterViewController opzione (Consigliata da MMDrawer) per spostarsi su uno schermo particolare e quindi un'app cancellata in background, Quando viene riaperto si avvia con la schermata iniziale predefinita ma ci aspettiamo che si riapri con lo Schermo che ha prima di entrare in Background.

e qui è il frammento di codice:

AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; 
appDelegate.homeController.navigationController.navigationBarHidden = YES; 
HomeViewController *homeVC = [[HomeViewController alloc] initWithNibName:@"HomeViewController" bundle:nil]; 
UINavigationController *_navg = [[UINavigationController alloc]initWithRootViewController:homeVC]; 
_navg.restorationIdentifier = @"homeNavigationController"; 
homeVC.title = [self.dataSource objectAtIndex:indexPath.row]; homeVC.restorationIdentifier = @"HomeViewController"; 
[appDelegate.drawerController setCenterViewController:_navg withCloseAnimation:YES completion:nil]; 
self.currentViewController = _navg; 
self.currentViewController.restorationIdentifier = @"homeNavigationController"; 

Aiutami a risolvere questo problema.

+1

'non funziona come expected' - così che cosa succede allora? quale codice hai aggiunto? che debugging hai fatto? cosa hai osservato? – Wain

+0

Ho utilizzato l'opzione setCenterViewController (Consigliata da MMDrawer) per spostarsi su uno schermo particolare e quindi un'app cancellata in background , Quando la riapliamo si avvia con la schermata iniziale predefinita ma ci aspettiamo che si riapri con lo Schermo che ha prima di entrare in Background. – Brjv

+0

Cosa intendi con il ripristino dello stato? Si tratta di accedere utente? – alicanbatur

risposta

0

È possibile eseguire facilmente la conservazione dello stato memorizzando gli stati in NSUUserDefault Procedere come segue: 1. Quando si avvia l'app per la prima volta.

{ 
     UserDefaults.standard.set("0", forKey: "state") 
    UserDefaults.standard.synchronize() 
    } 

2. Quando si uccide l'applicazione quindi memorizzare lo stato

{  
      UserDefaults.standard.set("1", forKey: "state") 
      UserDefaults.standard.synchronize() 
     } 

3. When you relaunch the app get the state ,setup the drawer and move to particular controller using it's navigation controller. 



if let state = UserDefaults.standard.object(forKey: "state") as? String{ 
     switch state{ 
       case "0": 
         //Do setup for MMDrawer for center ,left and right view 
         break 
       case "1": 
         //Do setup for MMDrawer for center ,left and right view 

       break 
       default: 
         break 
        } 
       } 
Problemi correlati