跳过视图控制器链

时间:2016-07-22 12:55:11

标签: ios swift

我有一个看起来像这样的视图控制器链:

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

Settings内,我可以选择退出。有没有办法在一个流畅的动画中直接从Settings跳到Login?现在,我在self.dismissViewController上呼叫Settings,然后在Main Menu上呼叫,但显示两个动画。

我正在寻找一种直接从Settings过渡到Login的方法,因此它甚至不应该在途中显示Main Menu。这可能吗?

2 个答案:

答案 0 :(得分:0)

在AppDelegate内部(在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()

    }

在验证用户凭据后的LoginVC中,登录成功后,将Bool值设置为true,如下所示: -

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

同样,当用户点击注销时将Bool设置为false,并将Login设置为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。

答案 1 :(得分:0)

在“设置”和“主菜单”上跳过self.dismissViewController,仅将其发送到根目录。如果设置为YES,则解雇将解除接收器上显示的所有内容,包括中间人。

请参阅discussion section, second paragraph, in the doc