1

I used 'LGSideMenuController' in my project. but it cannot open from my all viewcontroller. I want to open sidemenu in all my viewcontroller in my project. But right now I am able to open it from my 'HomeViewcontroller' and only for one time.

In my AppDelegete.swift file I make function and it called in 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()
}

In my 'Homeviewcontroller' and otherviewcontroller I open sidemenu like this.

@IBAction func sideMenuAction(_ sender: UIBarButtonItem) {

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

It open in only HomeViewcontroller but I want to open it in all Viewcontroller of my project. I am new in swift. Please help me. Thank you.

sohan123
  • 133
  • 1
  • 2
  • 11

1 Answers1

4

You can use the same method to open "LGSideMenuController" as you did in "HomeViewcontroller".

Suppose in another viewcontroller, you want to open "LGSideMenuController" on click of button event then code will look like

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

Edit Answer

I checked your code and found that you are trying to present another viewcontroller screen over "LGSideMenuController" instead of using push transition.

Please change your code in SideMenuVC controller as below

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

In the above code, i hide the sidemenu first and then push "EventsVC" view controller in sideMenuController. Please apply the same code on other button actions.

Hope it helps.

  • var image1 = UIImage.init(named: "nav_icon3.png") image1 = image1?.withRenderingMode(.alwaysOriginal) let leftBarButtonItem = UIBarButtonItem.init(image: image1, style: .plain, target: self, action: #selector(clickOnMenu)) self.navigationItem.leftBarButtonItem = leftBarButtonItem . @objc func clickOnMenu() { self.sideMenuController?.showLeftView(animated: true, completionHandler: nil) } – sohan123 Jun 17 '19 at 07:02
  • are you able to open the side menu from other view controllers? – Kuldeep Chander Jun 17 '19 at 07:40
  • No. That's the problem. I am able to open sidemenu only from HomeVC. But other viewcontroller I am not. I think in otherviewcontroller only I have to put this code only self.sideMenuController?.showLeftView(animated: true, completionHandler: nil) – sohan123 Jun 17 '19 at 07:48
  • are you able to click on left bar button item that you added in controller? – Kuldeep Chander Jun 17 '19 at 08:25
  • yes. Then go for this line also. self.sideMenuController?.showLeftView(animated: true, completionHandler: nil) but didnot executed. – sohan123 Jun 17 '19 at 08:54
  • If possible can you please share some demo code. I tried the above steps and i'm able to open sideMenu from another view controller. – Kuldeep Chander Jun 17 '19 at 09:51
  • https://drive.google.com/open?id=1cGi5tdtZIbWmk_B-N3assbELhCwvqVPp you can download demo from here. – sohan123 Jun 17 '19 at 11:04
  • I edit my answer. You are trying to present every view controller that is not the right approach. You should use push, pop and present transition. – Kuldeep Chander Jun 17 '19 at 14:00
  • I hope i solve your issue. Please accept my answer. – Kuldeep Chander Jun 18 '19 at 03:42
  • thank you so much @ Kuldeep Chander . it's really help me. – sohan123 Jun 28 '19 at 10:50