Как открыть боковое меню «LGSideMenuController» открыть из всех viewcontroller? - PullRequest
0 голосов
/ 17 июня 2019

Я использовал «LGSideMenuController» в своем проекте. но он не может открыться из моего всего viewcontroller. Я хочу открыть sidemenu во всех моих 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' и другом viewviewcontroller я открываю sidemenu вот так.

@IBAction func sideMenuAction(_ sender: UIBarButtonItem) {

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

Он открывается только в HomeViewcontroller, но я хочу открыть его во всех Viewcontroller моего проекта. Я новичок в Свифте. Пожалуйста, помогите мне. Спасибо.

1 Ответ

1 голос
/ 17 июня 2019

Вы можете использовать тот же метод, чтобы открыть «LGSideMenuController», как вы сделали в «HomeViewcontroller».

Предположим, что в другом viewcontroller вы хотите открыть «LGSideMenuController» при нажатии кнопки, тогда код будет выглядеть как

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

Редактировать ответ

Я проверил ваш код и обнаружил, что вы пытаетесь представить другой экран viewcontroller поверх "LGSideMenuController" вместо использования push-перехода.

Пожалуйста, измените ваш код в 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)
}

В приведенном выше коде я сначала скрываю боковое меню, а затем помещаю контроллер вида «EventsVC» в sideMenuController. Пожалуйста, примените тот же код к другим действиям кнопки.

Надеюсь, это поможет.

...