【问题标题】:Implementing side menu for iOS App, app crashing on gestures to present.为 iOS 应用程序实现侧边菜单,应用程序在显示手势时崩溃。
【发布时间】: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)    
}

请大家帮忙处理崩溃问题,以便我可以展示我的侧边菜单。谢谢!

【问题讨论】:

  • 可以分享崩溃日志吗?
  • 您的应用程序是否嵌入了导航控制器?

标签: ios swift side-menu


【解决方案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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多