我有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()
这将打开我的屏幕黑,但轻拍手势至少会显示正确的左侧菜单。
如何使这项工作?
你可以试试这一招。我在资料库中的样本项目进行了测试。这工作,但它是由你来清理代码,使展开自选和铸件安全。
基本上,关键是要嵌入您的leftController
或rightController
成UINavigationController
。并且使用的方式接入互联网等navigationController你试图访问slideMenuController
在AppDelegate
。然后更换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)
这会帮助你的。