为 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 应用程序实现侧边菜单,应用程序在显示手势时崩溃。的主要内容,如果未能解决你的问题,请参考以下文章

如何实现像 Todo iOS 应用一样的侧边菜单?

如何在ios中同时实现标签栏和侧边菜单?

登录屏幕后显示侧边菜单

无法在 IOS Swift 中使用委托方法关闭侧边菜单

Ionic 4:侧边菜单(ion-menu)在 IOS 中没有正确关闭

IOS:故事板和侧边菜单作为 facebook 应用程序 [关闭]