带SWRevealViewController的Exc_bad_指令

背景我的应用程序有一个MainViewController与UIButton导致另一个ViewController按下时。 在第二个ViewController是一个UIBarButtonItem它有一个“后退”inheritance到MainViewController。 一切都工作得很好,直到现在当我编程一个滑出菜单的SWRevealViewController的帮助下,我遵循这个Jared Davidson教程https://www.youtube.com/watch?v=8EFfPT3UeWs (简单,一般和简单)

问题滑出菜单完美地工作,但现在当按下第二个ViewController中的“返回”button崩溃的应用程序,由于

EXC_BAD_INSTRUCTION(code = EXC_I1386_INVOP,subcode = 0x0)

从MainViewController文件中的以下代码中,查看关于滑出菜单的平移手势。

这是我的MainViewControllers关于我的滑出菜单的代码。 它完美的工作,但它与第二个ViewController简单的“后退”segue推断。

@IBOutlet weak var Open: UIBarButtonItem! override func viewDidLoad() { super.viewDidLoad() Open.target = self.revealViewController() Open.action = Selector("revealToggle:") self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer()) //THIS IS THE CODE WHERE THE ERROR ALEERT OCCURS } 

当最后一行代码被删除时,“返回”再次继续,但显然不是滑出菜单。

帮助是否可以指定平移手势代码只有MainViewController及其滑出菜单,让“后退”segue只显示MainViewController像以前和/或“忽略”这行代码。 或者是否有可能以其他方式分开这两个,并避免从第二个ViewController(回到MainViewController)的“返回”segue按下时我的应用程序崩溃?

在此先感谢传说。

首先你需要检查Open是否为零。 当UIViewController创build不正确时,可能会发生此错误。 试试这个代码:

 @IBOutlet weak var Open: UIBarButtonItem? override func viewDidLoad() { super.viewDidLoad() if Open == nil { assertionFailure("Open is nil") } if let revealViewController = revealViewController() { Open?.target = revealViewController Open?.action = "revealToggle:" view.addGestureRecognizer(revealViewController.panGestureRecognizer()) } } 
Interesting Posts