【发布时间】:2016-02-17 16:54:39
【问题描述】:
我正在尝试完成我认为很常见的一组步骤:
当我的应用启动时,在导航控制器中加载主控制器:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
let window = UIWindow(frame: UIScreen.mainScreen().bounds)
window.rootViewController = UINavigationController(rootViewController: HomeViewController())
window.makeKeyAndVisible()
self.window = window
return true
}
当我的应用加载时,检查用户是否登录。如果没有,请提供一个注册视图控制器:
func applicationDidBecomeActive(application: UIApplication) {
if ref.loggedIn != nil {
// user authenticated
print(ref.userData)
} else {
// No user is signed in
let registerViewController = RegisterViewController()
if let navController = window?.rootViewController as? UINavigationController {
navController.presentViewController(registerViewController, animated: true, completion: nil)
}
}
}
在我的 RegisterViewController 中,提供一个切换到 LoginViewController 的按钮:
@IBAction func login(sender: UIButton) {
print("LOGIN")
let loginViewController = LoginViewController()
// How do I present the view controller here?
}
我的问题是:如何显示 LoginViewController 以便调用 self.dismissViewControllerAnimated(false, completion: nil) 将返回到我的 HomeViewController?
我尝试过的事情:
- 如果我从
RegisterViewController调用self.presentViewController,则关闭返回到RegisterViewController而不是HomeViewController - 如果我尝试通过
UIApplication.sharedApplication()获取对rootViewController 的引用并在rootViewController 上显示登录控制器,那么我会收到错误“尝试在...上显示...其视图不在窗口层次结构中!”
谢谢!
【问题讨论】: