如何更改slidemenu的视图 - 控制?

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

我有2个独立的VC-S,每个需要显示,这取决于该应用程序的状态的用户。这是我创造我在原来的AppDelegate slidemenu,它按预期工作:

let mainVC = MainNavVC.create()!
let leftMenuVC = LeftMenuVC.create()!
slideMenuController = SlideMenuController(mainViewController: mainVC, leftMenuViewController: leftMenuVC)
self.window?.rootViewController = slideMenuController
self.window?.makeKeyAndVisible()

但是,当我试图改变leftMenuVC屏幕变黑,菜单按钮只是停止工作,tapGesture仍显示错误的菜单。下面是一个代码我称之为改变slidemenu:

let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.slideMenuController?.leftViewController = AnotherLeftMenuVC.create()!
appDelegate.window?.rootViewController = appDelegate.slideMenuController

我也尝试另一种方法来改变leftMenuVC:

let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.slideMenuController = SlideMenuController(mainViewController: MainNavVC.sharedInst!,
leftMenuViewController: AnotherLeftMenuVC.create()!)
appDelegate.window?.rootViewController = appDelegate.slideMenuController
appDelegate.window?.makeKeyAndVisible()

这将打开我的屏幕黑,但轻拍手势至少会显示正确的左侧菜单。

如何使这项工作?

ios swift
1个回答
0
投票

你可以试试这一招。我在资料库中的样本项目进行了测试。这工作,但它是由你来清理代码,使展开自选和铸件安全。

基本上,关键是要嵌入您的leftControllerrightControllerUINavigationController。并且使用的方式接入互联网等navigationController你试图访问slideMenuControllerAppDelegate。然后更换navigationController的viewControllers

viewDidLoad()MainViewController(我说的是示例项目,你应该熟悉这个或不能在这里叙述你的mainController)。我有,将在5秒内被执行的代码块;)我用这种方法测试时的东西,只是为了节省时间用于演示的缘故。

override func viewDidLoad() {
        super.viewDidLoad()
        self.tableView.registerCellNib(DataTableViewCell.self)

        DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(5)) {
            let appDel = UIApplication.shared.delegate as! AppDelegate

            let storyboard = UIStoryboard(name: "Main", bundle: nil)
            let rightViewController = storyboard.instantiateViewController(withIdentifier: "RightViewController") as! RightViewController

            ((appDel.window?.rootViewController as! ExSlideMenuController).leftViewController as! UINavigationController).viewControllers = [rightViewController]
        }
    }

并在的appDelegate,我嵌入控制器成navigationController:

let slideMenuController = SlideMenuController(mainViewController:nvc, leftMenuViewController: UINavigationController(rootViewController: leftViewController), rightMenuViewController: rightViewController)

这会帮助你的。

© www.soinside.com 2019 - 2024. All rights reserved.