2016-07-22 10 views
0

ich einen View-Controller-Kette haben, die wie folgt aussieht:Aufspringend einen View-Controller-Kette

>ROOT (Login) 
---->Main Menu 
-------->Settings 

Innen Settings, ich habe eine Option, um sich abzumelden. Gibt es eine Möglichkeit, direkt von Settings zu Login in einer glatten Animation zu springen? Jetzt rufe ich self.dismissViewController auf Settings und dann auf Main Menu, die funktioniert, aber zwei Animationen zeigt.

Ich bin auf der Suche nach einer Möglichkeit zum Übergang direkt von Settings zu Login, so dass es nicht einmal Main Menu auf dem Weg zeigen sollte. Ist das möglich?

+0

Ändern Sie rootViewController im Fenster. – Hasya

+0

Wollen Sie also einen neuen Login View Controller instanziieren und ihn als Root-Ansicht des Fensters festlegen? – David

+0

Ich habe immer neue Login-Controller instanziiert, schau in Github, wie die Leute das tun, es sieht so aus, als ob dies der Weg ist –

Antwort

0

Innen AppDelegate (innerhalb didFinishLaunchingWithOptions): -

let userLoginStatus = NSUserDefaults.standardUserDefaults().boolForKey("isUserLoggedIn") 


    if(userLoginStatus) 
     { 
// Assuming "Main" is the name of your storyboard 
    let mainStoryBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
     letMainVC = mainStoryBoard.instantiateViewControllerWithIdentifier("Main") as! MainVC 


       window!.rootViewController = letMainVC 
       window!.makeKeyAndVisible() 

    } 

In LoginVC nach Anmeldeinformationen Benutzer Validierung, wenn die Anmeldung erfolgreich ist, setzen Bool Wert auf true wie folgt: -

// after successful login 
    NSUserDefaults.standardUserDefaults().setBool(true, forKey: "isUserLoggedIn") 
     NSUserDefaults.standardUserDefaults().synchronize() 

Ähnlich, wenn Benutzer klickt auf Abmeldung Setzen Sie Bool auf "false" und setzen Sie sich als "Root VC" wie folgt ein: -

//Inside logout closure :- 

    NSUserDefaults.standardUserDefaults().setBool(false, forKey: "isUserLoggedIn") 
       NSUserDefaults.standardUserDefaults().synchronize() 


    let loginVC = self.storyboard?.instantiateViewControllerWithIdentifier("Login") as! LoginVC 

    let appDel:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 

    appDel.window?.rootViewController = loginVC 

Damit wird der Übergang direkt in einem Schritt durchgeführt. Lassen Sie mich im Falle von Problemen wissen.

Hinweis: - Vergessen Sie nicht, Storyboard-ID im Identitätsbereich Ihrer Storyboard-Datei einzurichten.

0

Überspringen Sie die self.dismissViewController über Einstellungen und im Hauptmenü, nur an die Wurzel zu senden. Die Kündigung wird (mit Animation, wenn auf JA gesetzt) ​​alles, was auf dem Empfänger präsentiert wird, einschließlich Zwischenprodukten, abweisen.

Siehe discussion section, second paragraph, in the doc.

Verwandte Themen