swift - 如何打开从所有 View Controller 打开的 'LGSideMenuController' 侧边菜单?

标签 swift side-menu

我在我的项目中使用了“LGSideMenuController”。但它无法从我的所有 View Controller 打开。我想在我项目的所有 View Controller 中打开侧边菜单。但现在我可以从我的“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”和其他 View Controller 中,我像这样打开侧边菜单。

@IBAction func sideMenuAction(_ sender: UIBarButtonItem) {

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

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

最佳答案

您可以使用与在“HomeViewcontroller”中相同的方法打开“LGSideMenuController”。

假设在另一个 View Controller 中,您想在单击按钮事件时打开“LGSideMenuController”,那么代码如下所示

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

编辑答案

我检查了您的代码,发现您试图在“LGSideMenuController”上呈现另一个 View Controller 屏幕,而不是使用推送转换。

请如下更改SideMenuVC Controller 中的代码

@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)
}

在上面的代码中,我先隐藏了侧边菜单,然后在侧边菜单 Controller 中推送“EventsVC” View Controller 。请在其他按钮操作上应用相同的代码。

希望对您有所帮助。

关于swift - 如何打开从所有 View Controller 打开的 'LGSideMenuController' 侧边菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56625025/

相关文章:

ios - 侧边菜单覆盖特定情况下的后退按钮

ios - 为什么侧面菜单 View 来自下方?如何使其成为左侧菜单?

swift - 在循环内的 swift 3 中创建延迟

Swift 4 可解码 : How to map multiple values to a single enum value?

ios - Swift 准备 Segue : How to know If a button or a table row initiated Segue

react-native - 打开/关闭抽屉导航在 native react 中不起作用

ios - 如何在不造成任何失真的情况下调整 UIImage 的大小和形状?

html - 在 Swift 中将 Unicode 符号或其 XML/HTML 实体转换为其 Unicode 编号

ios - SideMenu 左侧未使用屏幕的整个高度