IOS登录后更改rootview控制器

Lon*_*275 2 login ios navigation-drawer swift

我在我的应用程序中实现了一个侧抽屉,它要求我在我的应用程序委托中设置根视图控制器。我现在在登录屏幕上工作。要访问登录屏幕,我必须注释掉我设置根视图控制器的位置。用户登录后如何设置根视图控制器?

下面是我的应用程序委托(或其一部分)

应用程序委托

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)

    let centerViewController = mainStoryboard.instantiateViewControllerWithIdentifier("ViewController") as!ViewController

    let drawerViewController = mainStoryboard.instantiateViewControllerWithIdentifier("DrawerViewController") as!DrawerViewController

    let leftSideNav = UINavigationController(rootViewController: drawerViewController)
    let centerNav = UINavigationController(rootViewController: centerViewController)

    centerContainer = MMDrawerController(centerViewController: centerNav, leftDrawerViewController: leftSideNav)

    centerContainer!.openDrawerGestureModeMask = MMOpenDrawerGestureMode.PanningCenterView;
    centerContainer!.closeDrawerGestureModeMask = MMCloseDrawerGestureMode.PanningCenterView;

    //window!.rootViewController = centerContainer
    window!.makeKeyAndVisible()

    return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)

}
Run Code Online (Sandbox Code Playgroud)

我有一种方法可以在成功登录后处理 segue,但不知道如何在委托之外设置根控制器。总之,如果我取消注释该//window!.rootViewController = centerContainer行但无法访问登录视图,则导航有效

Swi*_*ect 7

您可以动态交换根视图控制器:

self.view.window!.rootViewController = newVc
Run Code Online (Sandbox Code Playgroud)

一个简单的例子可以在这里找到:https : //stackoverflow.com/a/34951197/218152
一个完整的例子可以在这里找到:https : //stackoverflow.com/a/32109767/218152

交换rootViewController是一次性操作:没有后退按钮,没有动画。