iOS如何在dismissController时更改rootViewController

nin*_*ne9 1 ios swift

在此输入图像描述

我的故事板

如果用户没有登录,则rootViewController是 Login

用户登录完成后,rootViewController是MainTabBarController

我做到了

但是,我遇到的问题是 Logout

我的Logout是dismissViewController

如果我的rootViewController是Login,它的工作原理

它将删除当前的ViewController,因此Login出现

但是当我的rootViewController是MainTabBarController,dismiss不起作用时,我试着poptoRootViewController徒劳无功.

我该怎么办Logout

我想这样做

dismissController(true,{
   rootViewController = `Login`
})
Run Code Online (Sandbox Code Playgroud)

MSh*_*hah 5

对于Logout,请执行以下操作: - (在IBAction中添加以下代码或在调用注销时使用didSelect ..etc方法)

// Making Login as rootViewController as user is no longer logged in
    NSUserDefaults.standardUserDefaults().setBool(false, forKey: "isUserLoggedIn")
                NSUserDefaults.standardUserDefaults().synchronize()


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

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

                appDel.window?.rootViewController = loginVC
Run Code Online (Sandbox Code Playgroud)

另外在AppDelegate中添加以下内容: -

// Checking user login status, if user already logged in then making main tab bar view controller as root view controller 
           let userLoginStatus = NSUserDefaults.standardUserDefaults().boolForKey("isUserLoggedIn")

            if(userLoginStatus)
            {

                let mainStoryBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
                   let centerVC = mainStoryBoard.instantiateViewControllerWithIdentifier("MainTabBar") as! ViewController
            window!.rootViewController = centerVC
            window!.makeKeyAndVisible()
            }
Run Code Online (Sandbox Code Playgroud)

此外,在验证用户凭据后,登录验证完成的位置: -

 @IBAction func loginTapped(sender: AnyObject) {

        let appDel:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
   let mainStoryBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
        let centerVC = mainStoryBoard.instantiateViewControllerWithIdentifier("MainTabBar") as! ViewController
// Important to set status to true
 NSUserDefaults.standardUserDefaults().setBool(true, forKey: "isUserLoggedIn")
        NSUserDefaults.standardUserDefaults().synchronize()
appDel.window!.rootViewController = centerVC
        appDel.window!.makeKeyAndVisible()
}
Run Code Online (Sandbox Code Playgroud)

注意: -不要忘记为所需的视图控制器添加STORYBOARD ID以实现它们