gpt4 book ai didi

ios - 如何更改幻灯片菜单的 View Controller ?

转载 作者:行者123 更新时间:2023-11-29 06:02:00 25 4
gpt4 key购买 nike

我有 2 个独立的 VC,每个都需要根据应用程序的状态显示给用户。这就是我在 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()

这将使我的屏幕变黑,但点击手势至少会显示正确的左侧菜单。

如何做到这一点?

最佳答案

你可以试试这个技巧。我在你们图书馆的示例项目中测试了它。这可行,但需要您来清理代码并使展开选项和转换更安全。

基本上,技巧是将您的 leftControllerrightController 嵌入到 UINavigationController 中。并使用您尝试访问 AppDelegate 中的 slideMenuController 的方式访问此类 navigationController。然后替换该 navigationController 的 viewControllers

MainViewControllerviewDidLoad() 中(我正在谈论示例项目,您应该熟悉这一点或在此处关联您的 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 中,我将 Controller 嵌入到 navigationController 中:

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

这应该可以帮助你。

关于ios - 如何更改幻灯片菜单的 View Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54559420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com