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

时间:2015-11-11 22:49:15

标签: ios swift uinavigationcontroller

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

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

由于

enter image description here

我正在检查用户是否登录了app delegate:

 // 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
    }

解决方案:看起来有效
当用户按下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

2 个答案:

答案 0 :(得分:4)

解决方案1 ​​

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

解决方案2

或者,您可以在登录资料的基础上以模式方式呈现新的导航控制器,主控制器为其根。它将简单地呈现在它之上。

解决方案3

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

答案 1 :(得分:3)

设置导航控制器故事板ID

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

希望这会有所帮助。 :)