2017-03-23 57 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() 
相關問題