将控制权返回给我的根控制器

时间:2017-03-23 19:54:40

标签: ios swift3

我的第一个完整的快速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 个答案:

答案 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()