-4

我正在尝试为我的 iOS 应用程序实现侧边菜单,使用这个库https://github.com/jonkykong/SideMenu 通过代码实现,在视图中编写的代码下方确实加载了函数:

    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)    
}

伙计们请帮助处理崩溃,以便我可以展示我的侧面菜单。谢谢!

4

2 回答 2

0

我很确定您的应用程序在遇到nil此行中的值时会崩溃: SideMenuManager.default.menuAddPanGestureToPresent(toView: self.navigationController!.navigationBar)但是如果没有崩溃日志,我只能做出一些假设。

我假设self这里指的是UIViewController类。根据文档,该navigationController属性是视图控制器层次结构中最近的祖先,即导航控制器。如果视图控制器未嵌入导航控制器,则此属性为零。

我建议您在强制解包之前确保启动 UINavigationController 对象。这是有用的文档链接,它可以帮助您了解导航控制器的概念。

于 2018-06-18T11:45:21.963 回答
0

您需要从此更改您的一行代码

SideMenuManager.default.menuAddPanGestureToPresent(toView: self.navigationController!.navigationBar)

对此

SideMenuManager.default.menuAddPanGestureToPresent(toView: self.view)
于 2019-03-19T00:09:25.087 回答