You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用kukushi/SideMenu库,模态呈现页面后revealMenu()函数失效

解决kukushi/SideMenu模态呈现后无法调用revealMenu()的问题

我之前也碰到过类似的坑,其实核心原因很简单:当你用present方式弹出新的导航控制器时,这个导航控制器是独立于原来的SideMenuController层级之外的,所以ScheduleTableVC里的sideMenuController属性会是nil,自然调用revealMenu()没反应。下面给你几个可行的解决方案:

方案一:改用push方式(推荐,保持原有SideMenu层级)

如果你的业务场景允许,直接把ScheduleTableVCpush到当前导航栈里,这样它依然处于SideMenuController的管辖范围内,就能正常访问sideMenuController:

// 直接实例化目标VC,不需要单独套导航控制器(如果当前已有导航栈的话)
let vc = UIStoryboard.init(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ScheduleTableVC") as! ScheduleTableVC
vc.text = ""
self.navigationController?.pushViewController(vc, animated: true)

方案二:必须模态呈现时,把导航控制器嵌入SideMenuController

如果业务逻辑要求必须用模态弹出,那你需要把目标导航控制器作为SideMenuController的内容控制器,再模态呈现这个SideMenuController:

// 1. 实例化目标VC和对应的导航控制器
let scheduleVC = UIStoryboard.init(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ScheduleTableVC") as! ScheduleTableVC
scheduleVC.text = ""
let navController = UINavigationController(rootViewController: scheduleVC)

// 2. 创建SideMenuController并配置菜单和内容
let sideMenuVC = SideMenuController()
// 这里替换成你自己的菜单视图控制器实例
sideMenuVC.menuViewController = UIStoryboard.init(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "YourMenuVC")
sideMenuVC.contentViewController = navController

// 3. 模态呈现SideMenuController
self.present(sideMenuVC, animated: true, completion: nil)

这样模态出来的视图控制器层级里包含了SideMenuController,ScheduleTableVC就能正确拿到sideMenuController实例,调用revealMenu()就正常了。

额外检查项

最后再确认两个点:

  • 确保ScheduleTableVC文件顶部已经导入了SideMenu库:import SideMenu
  • 检查全局配置是否正确(比如在SceneDelegate或AppDelegate里):
// 示例配置,根据你的实际菜单VC调整
SideMenuManager.default.leftMenuNavigationController = storyboard?.instantiateViewController(withIdentifier: "LeftMenuNav") as? UISideMenuNavigationController
// 可选:添加侧滑手势
SideMenuManager.default.addPanGestureToPresent(toView: self.window!)

内容的提问来源于stack exchange,提问作者Adakhan Azizbek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:45:55