如何从所有 viewcontroller 打开 'LGSideMenuController' 侧边菜单?

how to open 'LGSideMenuController' side menu open from all viewcontroller?

我在我的项目中使用了 'LGSideMenuController'。但它无法从我的所有 viewcontroller 中打开。我想在我的项目中的所有 viewcontroller 中打开侧边菜单。但现在我可以从我的 'HomeViewcontroller' 打开它,而且只能打开一次。

在我的 AppDelegete.swift 文件中,我创建函数并在 otpviewcontroller 中调用它。

func createSideMenu(){

    let storyBoard = UIStoryboard.init(name: "Main", bundle: nil)

    let rootviewcontroller = storyBoard.instantiateViewController(withIdentifier: "HomeVC") as! HomeVC
    let navigation = UINavigationController.init(rootViewController: rootviewcontroller)
    let sideMenuVC = storyBoard.instantiateViewController(withIdentifier: "SideMenuVC") as! SideMenuVC

    let sideMenuController = LGSideMenuController(rootViewController: navigation,
                                                  leftViewController: sideMenuVC,
                                                  rightViewController: nil)
    sideMenuController.leftViewWidth = 280.0
    sideMenuController.leftViewPresentationStyle = .scaleFromBig

    self.window?.rootViewController = sideMenuController
    self.window?.makeKeyAndVisible()
}

在我的'Homeviewcontroller'和其他viewcontroller中,我这样打开侧边菜单。

@IBAction func sideMenuAction(_ sender: UIBarButtonItem) {

    self.sideMenuController?.showLeftView(animated: true, completionHandler: nil)
}

它只在主页Viewcontroller 中打开,但我想在我的项目的所有 Viewcontroller 中打开它。我是 swift 的新人。请帮我。谢谢。

您可以使用与 "HomeViewcontroller" 相同的方法打开 "LGSideMenuController"。

假设在另一个 viewcontroller 中,您想要在单击按钮事件时打开 "LGSideMenuController",那么代码将如下所示

@IBAction func openSideMenu(_ sender: Any) {
        self.sideMenuController?.showLeftView(animated: true, completionHandler: nil)
    }

编辑答案

我检查了你的代码,发现你试图在 "LGSideMenuController" 上显示另一个 viewcontroller 屏幕,而不是使用推送转换。

请在 SideMenuVC 控制器中更改您的代码,如下所示

@IBAction func eventsAction(_ sender: Any) {
    let vc = self.storyboard?.instantiateViewController(withIdentifier: "EventsVC") as! EventsVC
    //let navigationController = UINavigationController(rootViewController: vc)
    //self.present(navigationController, animated: true, completion: nil)
    self.sideMenuController?.hideLeftViewAnimated()
    self.sideMenuController?.rootViewController?.show(vc, sender: self)
}

在上面的代码中,我先隐藏了侧边菜单,然后在 sideMenuController 中推送 "EventsVC" 视图控制器。请在其他按钮操作上应用相同的代码。

希望对您有所帮助。