到目前为止,我正在使用GitHub上提供的SWRevealViewController
库。这对我很有用,你可以在这里看到:
如何在此侧边栏菜单中实现视差效果?
此外,我还尝试了一些更具体针对我的目标的方法,比如 https://github.com/SSA111/SSASideMenu
我得到了这个结果:
但是,在选择任何类型的GRE测试后,将显示选定特定类别的前视图。
但现在点击GRE Main顶部的菜单栏按钮,侧边栏菜单不会出现,而是出现此错误:
致命错误:在解包可选值时意外发现nil
此错误以库文件SSASideMenu
为目标,其中显示此前视图控制器的父ViewController为nil。因为SSASideMenu
通过其父级检查发件人。
如果父匹配SSASideView
,则会加载侧栏菜单。
这是我的代码:
extension UIViewController {
var sideMenuViewController: SSASideMenu? {
get {
print(" >>>>>>>>>> ????????? ///////////// Here we are")
return getSideViewController(self)
}
}
private func getSideViewController(viewController: UIViewController) -> SSASideMenu? {
var parent = viewController.parentViewController
if parent == viewController.parentViewController {
if parent is SSASideMenu
{
print("2nd Step")
return parent as? SSASideMenu
}
else
{
parent = viewController.parentViewController
print("1st Step")
return getSideViewController(parent!)
}
}
return nil
}
@IBAction func presentLeftMenuViewController() {
sideMenuViewController?._presentLeftMenuViewController()
}
func showPresent()
{
print("Hello")
sideMenuViewController?._presentLeftMenuViewController()
}
@IBAction func presentRightMenuViewController() {
sideMenuViewController?._presentRightMenuViewController()
}
}
最后,在ViewController中,它只是用作
button.addTarget(self, action: #selector(SSASideMenu.showPresent), forControlEvents: UIControlEvents.TouchUpInside)