2016-07-22 33 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

相关问题