2017-03-23 53 views
0

我的第一个完整的swift 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?

我的书没有这样的例子,我想不出如何搜索,没有返回一千转向架!

回答

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() 
相关问题