Определите, какой viewController представил SideMenu, и реализуйте соответствующие функции для его презентации. - PullRequest
0 голосов
/ 18 февраля 2019

Я использую следующий модуль для моей функциональности SideMenu.Теперь, если я открыл его из XYZ viewController и выбрал строку, которая снова открывает XYZ viewController, страница будет нажата, но вместо этого я хочу, чтобы SideMenu было закрыто, а не нажимать на уже представленный viewController.

Вот пользовательский интерфейс:

enter image description here

А вот мой код didSelectRow, который достаточно ясен:

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    switch indexPath.row {
    case 0:
        let playerVC = NavigationHelper.shared.getStoryBoard().instantiateViewController(withIdentifier: "mainPage") as? MainViewController
        navigationController?.pushViewController(playerVC!, animated: true)
    case 1:
        let historyVC = NavigationHelper.shared.getStoryBoard().instantiateViewController(withIdentifier: "historyPage") as? BroadcastsHistoryViewController
        navigationController?.pushViewController(historyVC!, animated: true)
    case 2:
        let sendMessageVC = NavigationHelper.shared.getStoryBoard().instantiateViewController(withIdentifier: "messagingPage") as? MessaginViewController
        navigationController?.pushViewController(sendMessageVC!, animated: true)
    case 3:
        let settingsVC = NavigationHelper.shared.getStoryBoard().instantiateViewController(withIdentifier: "settingPage") as? SettingsViewController
        navigationController?.pushViewController(settingsVC!, animated: true)
    case 4:
        let aboutVC = NavigationHelper.shared.getStoryBoard().instantiateViewController(withIdentifier: "aboutPage") as? AboutAppViewController
        navigationController?.pushViewController(aboutVC!, animated: true)
    default: break
    }
}

Пока яПопытка обнаружить topMost viewController, получить свойство presentingViewController, но безуспешно.Может ли кто-нибудь помочь мне правильно с этим справиться?

1 Ответ

0 голосов
/ 18 февраля 2019

попробуйте добавить var previousVC: UIViewController? в контроллер корневого представления sideMenu (давайте назовем его SideMenuVC)

, затем в каждой форме контроллера представления, где вы представите боковое меню, добавьте

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if let nextVC = segue.destination as? SideMenuVC {
        nextVC.previousVC = self
    }
}

затем в случае XYZViewController напишите

if let vc = previousVC as? XYZViewController{
    //dismiss sidemenu
} else {
   //instantiate and push ViewController 
}
...