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

iOS在2个导航控制器之间切换,ios,swift,uinavigationcontroller,Ios,Swift,Uinavigationcontroller,在我的应用程序中,如果用户没有登录,它会显示一个嵌入在导航控制器中的登录控制器。 用户登录后,应用程序应切换到其他导航控制器以显示应用程序 当用户登录时,如何从一个导航控制器切换到另一个导航控制器 谢谢 我正在检查用户是否是登录应用程序代理: // Check if user is log let currentUser = PFUser.currentUser() if currentUser != nil { // Do stuff with the us

在我的应用程序中,如果用户没有登录,它会显示一个嵌入在导航控制器中的登录控制器。 用户登录后,应用程序应切换到其他导航控制器以显示应用程序

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

谢谢

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

 // 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
    }
解决方案:看起来很有效
当用户按下登录按钮时:

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
解决方案1 一种解决方案是只使用一个导航控制器。当用户登录时,您将弹出用于登录的所有视图控制器,并将主视图控制器推送到堆栈上

解决方案2 或者,您可以在登录内容的顶部以模式呈现一个新的导航控制器,并将主控制器作为其根。它将简单地呈现在它上面

解决方案3

您还可以考虑首先创建带有主视图控制器的导航控制器,并在其顶部呈现登录导航控制器。然后,当用户登录时,您只需关闭显示主视图控制器的登录导航控制器。

设置导航控制器情节提要ID

    let navigationController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("SecondNavigationController")
    self.presentViewController(navigationController, animated: true, completion: nil)

希望这有帮助。:)

您在哪里决定用户是否登录?应用程序代理?是否加载视图?是,在应用程序代理中。代码已编辑。您也可以更改为其他导航控制器,使用情节提要ID!!!当用户通过按log按钮登录时,我无法使self.window.rootViewController生效,因为我现在不在应用程序代理中,但在LoginViewController中,您可以在视图控制器中的任何位置使用应用程序代理。只需将app delegate的引用传递给您的视图控制器!!!!那你怎么打发它?你是说什么时候你想注销?顺便说一句,你也可以使用nsuserdefaults来检查登录。解决方案1在你弹出登录VC之后和推主VC之前是否会出现故障?我们有一个类似的问题,但第二个导航控制器(即流量)的附加扭曲需要与第一个导航控制器不同的方向。