执行具有标识符的segue不会在swift 2中工作

Ale*_*ald 7 iphone ios swift2

当用户登录到应用程序时,我一直在使用此代码执行自定义segue:

dispatch_async(dispatch_get_main_queue()){

                self.performSegueWithIdentifier("showSTPS", sender: self)

}
Run Code Online (Sandbox Code Playgroud)

我目前在perpareForSegue中有这个代码(我不完全确定我是否需要它)

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?){
            if "showSTPS" == segue.identifier {
                }
}
Run Code Online (Sandbox Code Playgroud)

我每次尝试执行segue时都会收到以下错误:

2015-08-31 11:56:28.998 ICEFLO [3858:651041]***由于未捕获的异常'NSInternalInconsistencyException'而终止app,原因是:'无法执行带有标识符'showSTPS'的segue'.segue必须有一个performHandler,或者它必须覆盖-perform.

任何有关做什么的建议将不胜感激 - 请注意这是针对swift2/ios9

-Yogi

小智 37

确保在故事板中,segue类型未设置为自定义.如果将其设置为自定义,则需要提供自己的自定义segue类.


AMa*_*yes 5

迅捷版:

class CustomSegue: UIStoryboardSegue {
    override func perform() {

        let src = self.sourceViewController
        let dst = self.destinationViewController
        src.navigationController?.pushViewController(dst, animated: true)
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 只是要添加到此答案中:请注意,不要在此方法内调用`super.perform()`,否则,尽管重写了该方法,但仍将获得与OP相同的运行时错误。 (3认同)