在我的应用中,如果用户未登录,则会显示嵌入在导航控制器中的登录控制器。 用户登录后,应用程序应切换到其他导航控制器以显示应用程序。
如何在用户登录时从一个导航控制器切换到另一个导航控制器。 ?
由于
我正在检查用户是否登录了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
答案 0 :(得分:4)
一种解决方案是仅使用一个导航控制器。当用户登录时,您将弹出用于登录的所有视图控制器并将主视图控制器推送到堆栈上。
或者,您可以在登录资料的基础上以模式方式呈现新的导航控制器,主控制器为其根。它将简单地呈现在它之上。
您还可以考虑先使用主视图控制器创建导航控制器,然后在其上显示登录导航控制器。然后,当用户登录时,您只会关闭显示主视图控制器的登录导航控制器。
答案 1 :(得分:3)
设置导航控制器故事板ID
let navigationController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("SecondNavigationController")
self.presentViewController(navigationController, animated: true, completion: nil)
希望这会有所帮助。 :)