【问题标题】:swift MMDrawerController: want to change rootViewControllerswift MMDrawerController:想改变rootViewController
【发布时间】:2015-04-19 18:50:01
【问题描述】:

我正在使用 MMDraweController。它完美地工作。我有 rootViewController 的问题。当应用程序启动时,它会加载 loginViewController。所以我不想要侧边栏菜单(loginViewController 没有任何导航控制器)。我的问题是使用应用程序下面的代码从 viewController 开始,而不是 loginViewController。如何使用没有侧栏菜单的登录页面和带有侧栏的 viewController?

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

【问题讨论】:

  • 我试图改变窗口!.RootViewController = loginViewController 但它给了我一个错误
  • 是的,一分钟我会回答
  • 你的问题找到解决办法了吗,能分享一下吗,我也遇到和你一样的问题。

标签: swift login mmdrawercontroller


【解决方案1】:

当你加载 loginPageViewController 时,只需输入这行代码:

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

    appDelegate.centerContainer!.openDrawerGestureModeMask = MMOpenDrawerGestureMode.None

【讨论】:

  • 放到viewdidload方法中
  • 看看我的问题...你有相同类型的问题.....stackoverflow.com/questions/29944715/… 或故事板位置
  • 是的,我把它放在 viewdidload 中,但它仍然进入 viewcontroller insted of login....我只是用你的问题代码更改代码....请帮帮我,伙计...有相同的情况
【解决方案2】:

为时已晚,但可能会帮助其他人...

我通过在 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()
}

然后在登录完成后调用这个函数或者像这样的另一个 ViewController

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

就是这样!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多