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