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)
一种解决方案是仅使用单个导航控制器。当用户登录时,您将弹出用于登录的所有视图控制器,并将主视图控制器推入堆栈。
或者,您可以在登录内容的顶部以模态形式显示一个新的导航控制器,并以主控制器为根。它会简单地显示在其顶部。
您也可以考虑先使用主视图控制器创建导航控制器,然后在其顶部显示登录导航控制器。然后,当用户登录时,您只需关闭显示主视图控制器的登录导航控制器即可。