ios - 如何更改幻灯片菜单的视图控制器?
问题描述
我有 2 个单独的 VC-s,每个都需要根据应用程序的状态向用户显示。这就是我在 AppDelegate 中创建原始幻灯片菜单的方式,它按预期工作:
let mainVC = MainNavVC.create()!
let leftMenuVC = LeftMenuVC.create()!
slideMenuController = SlideMenuController(mainViewController: mainVC, leftMenuViewController: leftMenuVC)
self.window?.rootViewController = slideMenuController
self.window?.makeKeyAndVisible()
但是当我尝试更改 leftMenuVC 时,屏幕变黑,菜单按钮停止工作,并且 tapGesture 仍然显示错误的菜单。这是我调用来更改幻灯片菜单的代码:
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()
这将使我的屏幕变黑,但 tapGesture 至少会显示正确的 leftMenu。
如何使这项工作?
解决方案
你可以试试这个技巧。我在您图书馆的示例项目中对其进行了测试。这可行,但您需要清理代码并使展开的选项和铸件更安全。
基本上,诀窍是将您的leftController
or嵌入rightController
到UINavigationController
. 并使用您尝试访问slideMenuController
. AppDelegate
然后替换viewControllers
那个navigationController。
在(我说的是示例项目,你应该熟悉这个或者在这里关联你的mainController)viewDidLoad()
。MainViewController
我有这段代码将在 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)
这应该可以帮助你。
推荐阅读
- r - 改变数值向量
- python - OperatorNotAllowedInGraphError:不允许迭代 `tf.Tensor`:AutoGraph 确实将此函数转换为自定义模型
- css - 我想使用 public/images 文件夹中的图像作为正文背景,但它给了我错误
- jquery - 压缩器 Js 提供图像水印功能?
- google-chrome - 如何解决 cloudflare 中的验证码问题
- c# - 如何在 Winform 中更改 'notifyicon' 的 'tooltipicon'
- typescript - 将类型数组简化为单一类型?
- styles - 有没有办法将符号样式文件 .sld 与带有 QGIS 的 geojson 文件相关联
- azure-sql-database - 无法从具有 db_datareader 角色的几个特定表中读取数据
- linux - gdb 如何单步执行直到语句结束(“n”不这样做!)