如何从所有 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" 视图控制器。请在其他按钮操作上应用相同的代码。
希望对您有所帮助。
我在我的项目中使用了 '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" 视图控制器。请在其他按钮操作上应用相同的代码。
希望对您有所帮助。