为 iOS 应用程序实现侧边菜单,应用程序在显示手势时崩溃。
Posted
技术标签:
【中文标题】为 iOS 应用程序实现侧边菜单,应用程序在显示手势时崩溃。【英文标题】:Implementing side menu for iOS App, app crashing on gestures to present. 【发布时间】:2018-06-18 11:09:42 【问题描述】:我正在尝试使用此库 https://github.com/jonkykong/SideMenu 为我的 ios 应用程序实现侧边菜单 通过代码实现,下面view中写的代码确实加载了func:
let menuRightNavigationController = UISideMenuNavigationController(rootViewController: SideMenuViewController())
SideMenuManager.default.menuRightNavigationController = menuRightNavigationController
SideMenuManager.default.menuFadeStatusBar = false
SideMenuManager.default.menuAddPanGestureToPresent(toView: self.navigationController!.navigationBar)
SideMenuManager.default.menuAddScreenEdgePanGesturesToPresent(toView: self.navigationController!.view)
但是应用程序在上面代码的最后两行崩溃了,下面的代码写在按钮动作中:
@objc func menuButtonAction(sender: UIButton!)
present(SideMenuManager.default.menuRightNavigationController!, animated: true, completion: nil)
请大家帮忙处理崩溃问题,以便我可以展示我的侧边菜单。谢谢!
【问题讨论】:
可以分享崩溃日志吗? 您的应用程序是否嵌入了导航控制器? 【参考方案1】:我很确定您的应用程序在遇到此行中的 nil
值时会崩溃:
SideMenuManager.default.menuAddPanGestureToPresent(toView: self.navigationController!.navigationBar)
,但是没有崩溃日志我只能做一些假设。
我假设这里的self
指的是UIViewController
类。根据documentation navigationController
属性是视图控制器层次结构中最近的祖先,它是导航控制器。如果视图控制器未嵌入导航控制器,则此属性为零。
我建议您在强制解包之前确保启动 UINavigationController 对象。这里是useful documentation link,可以帮助你了解导航控制器的概念。
【讨论】:
谢谢,我已将导航控制器嵌入到我的视图控制器中。【参考方案2】:您需要从这里更改您的一行代码
SideMenuManager.default.menuAddPanGestureToPresent(toView: self.navigationController!.navigationBar)
到这里
SideMenuManager.default.menuAddPanGestureToPresent(toView: self.view)
【讨论】:
以上是关于为 iOS 应用程序实现侧边菜单,应用程序在显示手势时崩溃。的主要内容,如果未能解决你的问题,请参考以下文章