SideMenu не отображается после входа в систему - PullRequest
1 голос
/ 23 декабря 2019

Я включил Кукуши боковое меню. Я сделал все в соответствии с документацией. Снимок экрана с кодами в приложении делегата приведен ниже:

    func setUpHomeVC() {
    var window: UIWindow?

    let storyBoard = UIStoryboard.init(name: "Dashboard", bundle: Bundle.main)
    let contentViewController = storyBoard.instantiateViewController(withIdentifier: "DashboardViewController") as! DashboardViewController
    let menuViewController = storyBoard.instantiateViewController(withIdentifier: "MenuViewCOntroller") as! MenuViewCOntroller
    SideMenuController.preferences.basic.menuWidth = 240
    SideMenuController.preferences.basic.statusBarBehavior = .hideOnMenu
    SideMenuController.preferences.basic.position = .sideBySide
    SideMenuController.preferences.basic.direction = .left
    SideMenuController.preferences.basic.enablePanGesture = true
    SideMenuController.preferences.basic.supportedOrientations = .portrait
    SideMenuController.preferences.basic.shouldRespectLanguageDirection = true
        window = UIWindow(frame: UIScreen.main.bounds)
        window?.rootViewController = SideMenuController(contentViewController: contentViewController,
        menuViewController: menuViewController)
        window?.makeKeyAndVisible()
}

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    setUpHomeVC()
    return true
}

enter image description here Идентификатор, класс и модуль добавлены в соответствии с документацией. После входа в систему появляется панель управления, состоящая из кнопки меню. При входе в систему код:

 private func goToDashboard() {
    let dashboard = UIStoryboard(name: "Dashboard", bundle: nil)
    let navView = dashboard.instantiateViewController(identifier: "DashboardViewController") as DashboardViewController
    present(navView,animated: false)

}

На приборной панели есть кнопка с событием нажатия:

  @IBAction func btnMenuClicked(_ sender: Any) {
    print("Menu button has been clicked")
    self.sideMenuController?.revealMenu(animated: true)
}

, когда я нажимаю на эту кнопку, вызывается функция печати, но менюне раскрывается.

Может кто-нибудь объяснить это. Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 24 декабря 2019

Вы можете настроить ваше приложение Deegate следующим образом:

  func setUpHomeVC() {
    let storyboard = UIStoryboard(name: "Your Login Storyboard", bundle: nil)
    let initialViewController = storyboard.instantiateViewController(withIdentifier: "LoginVC")
    self.window?.rootViewController = initialViewController
}

   func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    setUpHomeVC()
    return true
}

И в вашем событии входа в систему:

    private func goToDashboard() {
    self.pushVC()

}

private func pushVC()  {
    let storyBoard = UIStoryboard.init(name: "Dashboard", bundle: Bundle.main)
    let contentViewController = storyBoard.instantiateViewController(withIdentifier: "DashboardViewController") as! DashboardViewController
    let menuViewController = storyBoard.instantiateViewController(withIdentifier: "MenuViewCOntroller") as! MenuViewCOntroller
    SideMenuController.preferences.basic.menuWidth = 240
    SideMenuController.preferences.basic.statusBarBehavior = .hideOnMenu
    SideMenuController.preferences.basic.position = .sideBySide
    SideMenuController.preferences.basic.direction = .left
    SideMenuController.preferences.basic.enablePanGesture = true
    SideMenuController.preferences.basic.supportedOrientations = .portrait
    SideMenuController.preferences.basic.shouldRespectLanguageDirection = true
    window = UIWindow(frame: UIScreen.main.bounds)
    window?.rootViewController = SideMenuController(contentViewController: contentViewController,
                                                    menuViewController: menuViewController)
    window?.makeKeyAndVisible()

}
0 голосов
/ 23 декабря 2019

Я думаю, что ваша текущая реализация неверна. Проблема в том, что нам нужно реализовать и выдвинуть контроллеры представления как пакет SideMenuControllers, а не как отдельные ViewControlers

Если вы хотите иметь боковое меню после входа в систему, то сначала установите страницу входа в свой файл didFinishLaunchingWithOptions.

Затем вы можете вызвать setUpHomeVC из вашего логина.

0 голосов
/ 23 декабря 2019

Ваш DashboardVC должен быть в навигационном контроллере, чтобы боковое меню отображалось. Попробуйте нажать контроллер вместо того, чтобы представлять его. Если у вас есть контроллер в другой раскадровке, вы можете использовать эту функцию:

  func pushVC(storyboardName : String, vcname : String)  {
        let vc = UIStoryboard.init(name: storyboardName, bundle: Bundle.main).instantiateViewController(withIdentifier: vcname)
        self.navigationController?.pushViewController(vc, animated: true)
    }

Кроме того, я бы посоветовал вам узнать, когда нажимать, представлять и делатьвсе контроллеры корневого представления служат разным целям.

...