iOS在2个导航控制器之间切换

use*_*523 17 uinavigationcontroller ios swift

在我的应用程序中,如果用户未登录,则会显示嵌入在导航控制器中的登录控制器.用户登录后,应用程序应切换到其他导航控制器以显示应用程序.

当用户登录时,如何从一个导航控制器切换到另一个导航控制器.?

谢谢

在此输入图像描述

我正在检查用户是否登录了应用程序代理:

 // Check if user is log
    let currentUser = PFUser.currentUser()
    if currentUser != nil {
        // Do stuff with the user
    } else {
        // Show the signup or login screen
        let mainStoryboardIpad : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
        let nav = mainStoryboardIpad.instantiateViewControllerWithIdentifier("LogInController") as! UINavigationController
        self.window?.rootViewController = nav
    }
Run Code Online (Sandbox Code Playgroud)

解决方案:看起来很有效
当用户按下logIn按钮时:

let mainStoryboardIpad : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let nav = mainStoryboardIpad.instantiateViewControllerWithIdentifier("MainNavController") as! UINavigationController
    let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
    appDelegate.window?.rootViewController = nav
Run Code Online (Sandbox Code Playgroud)

Raf*_*fAl 5

解决方案1

一种解决方案是仅使用单个导航控制器。当用户登录时,您将弹出用于登录的所有视图控制器,并将主视图控制器推入堆栈。

解决方案2

或者,您可以在登录内容的顶部以模态形式显示一个新的导航控制器,并以主控制器为根。它会简单地显示在其顶部。

解决方案3

您也可以考虑先使用主视图控制器创建导航控制器,然后在其顶部显示登录导航控制器。然后,当用户登录时,您只需关闭显示主视图控制器的登录导航控制器即可。