我的第一个完整的快速3应用程序。
我有一个名为RootViewController的ViewController。我有一个MainViewController和一个LoginViewController。
当我启动RootViewController时,我会检查viewDidLoad()
中的登录凭据。如果没有,我执行以下代码来显示我的登录页面:
if loginViewController == nil {
loginViewController = storyboard?.instantiateViewController(withIdentifier: RootViewController.LOGIN) as! LoginViewController!
}
if currentViewController != nil {
currentViewController!.willMove(toParentViewController: nil)
currentViewController.view.removeFromSuperview()
currentViewController!.removeFromParentViewController()
}
if loginViewController != nil {
loginViewController?.view.frame = view.frame
self.addChildViewController(loginViewController!)
self.view.insertSubview(loginViewController!.view, at: 0)
loginViewController!.didMove(toParentViewController: self)
}
currentViewController = loginViewController
现在我的问题是这个。在我的LoginViewController中,用户已成功登录。如何将控制权切换回我的根视图控制器,以便它切换到我的MainViewController?
我的书中没有这样的例子,我无法想到如何搜索没有返回一千个转向架!
答案 0 :(得分:1)
我在AppDelegate中使用以下内容:
func changeRootViewControllerToMyVC() {
let storyboard = self.window?.rootViewController?.storyboard
let desiredViewController = storyboard?.instantiateViewController(withIdentifier: "myViewController") as? myViewController;
if let win = self.window{
UIView.transition(with: win, duration: 0.3, options: UIViewAnimationOptions.transitionFlipFromLeft, animations: {
win.rootViewController = desiredViewController
}, completion: nil)
}
}
我称之为:
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.changeRootViewControllerToMyVC()