检测哪个视图控制器显示侧面菜单并为其显示实现适当的功能

问题描述 投票:0回答:1

我正在使用the following pod作为我的SideMenu功能。现在,如果我从XYZ viewController打开并选择了再次打开XYZ viewController的行,则页面正在被推送,但是我想要关闭SideMenu,不要推送已经呈现的viewController。

这是UI:

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财产,但没有成功。任何人都可以帮助我以正确的方式处理它吗?

ios swift viewcontroller side-menu
1个回答
0
投票

尝试将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 
}
© www.soinside.com 2019 - 2024. All rights reserved.