swift MMDrawerController: want to change rootViewController

女生的网名这么多〃 提交于 2019-12-07 19:05:39

问题


I am using MMDraweController. It work perfectly. I have problem with rootViewController. When app starts it load loginViewController. So I dont want side bar menu there (loginViewController doesnt have any navigation controller). My problem is using code below the app starts from viewController, not loginViewController. How can I use login page with no side bar menu and viewController with side bar?

var rootViewController = self.window!.rootViewController

        let mainStoryBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)

        var centerViewController  = mainStoryBoard.instantiateViewControllerWithIdentifier("ViewController") as ViewController
        //var rootViewController = centerViewController

        var leftViewController = mainStoryBoard.instantiateViewControllerWithIdentifier("SideBarMenuViewController") as SideBarMenuViewController
        var leftSideNav = UINavigationController(rootViewController: leftViewController)
        var centerSideNav = UINavigationController(rootViewController: centerViewController)

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


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

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

回答1:


When you load loginPageViewController just put this line of code:

 var appDelegate: AppDelegate =  UIApplication.sharedApplication().delegate as AppDelegate

    appDelegate.centerContainer!.openDrawerGestureModeMask = MMOpenDrawerGestureMode.None



回答2:


Too late but might help someone else...

I solved such issue by creating a function in AppDelegate.swift

func goToMainVC() {
    var rootViewController = self.window!.rootViewController
    let mainStoryBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)

    var centerViewController  = mainStoryBoard.instantiateViewControllerWithIdentifier("ViewController") as ViewController
    //var rootViewController = centerViewController

    var leftViewController = mainStoryBoard.instantiateViewControllerWithIdentifier("SideBarMenuViewController") as SideBarMenuViewController
    var leftSideNav = UINavigationController(rootViewController: leftViewController)
    var centerSideNav = UINavigationController(rootViewController: centerViewController)

    centerContainer = MMDrawerController(centerViewController: centerSideNav, leftDrawerViewController: leftSideNav)
    centerContainer!.openDrawerGestureModeMask = MMOpenDrawerGestureMode.PanningCenterView
    centerContainer!.closeDrawerGestureModeMask = MMCloseDrawerGestureMode.PanningCenterView

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

Then called this function after finishing from login or another ViewController like this

let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.goToMainVC()

That's it!



来源:https://stackoverflow.com/questions/29734298/swift-mmdrawercontroller-want-to-change-rootviewcontroller

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!