2016-07-22 36 views
0

我有一個看起來像這樣的視圖控制器鏈:跳起來視圖控制器鏈

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

裏面Settings,我不得不退出的選項。有沒有辦法在一個流暢的動畫中從Settings直接跳到Login?現在我打電話self.dismissViewControllerSettings然後Main Menu哪些工作,但顯示兩個動畫。

我正在尋找一種方法,直接從Settings轉換爲Login,所以它甚至不應該在路上顯示Main Menu。這可能嗎?

+0

在窗口上更改rootViewController。 – Hasya

+0

那麼你是說實例化一個新的登錄視圖控制器並將其設置爲窗口的根視圖? – David

+0

我一直在實例化新的登錄控制器,看看github人們是如何做到這一點的,看起來這是做這件事的方法 –

回答

0

內部的AppDelegate(內didFinishLaunchingWithOptions): - :

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

類似地,當 -

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() 

    } 

在LoginVC驗證用戶憑證後,當登錄成功,布爾值,如下所示設置爲真用戶單擊註銷將Bool設置爲false,並將Root設置爲根VC,如下所示: -

//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 

這將直接進行轉換。如有任何問題,請告知我。

注意: -不要忘記在Storyboard文件的Identity部分設置Storyboard ID。

0

跳過設置和主菜單上的self.dismissViewController,只發送到根目錄。如果設置爲YES,解散將會消失(包括動畫)接收器上顯示的所有內容,包括中間體。

請參閱discussion section, second paragraph, in the doc

相關問題