用标识符执行segue不会在swift 2中工作

当用户login到应用程序时,我一直在使用这段代码来执行一个自定义的继续:

dispatch_async(dispatch_get_main_queue()){ self.performSegueWithIdentifier("showSTPS", sender: self) } 

我目前有这个代码在我的perpareForSegue(我不完全确定,如果我需要它)

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

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

2015-08-31 11:56:28.998 ICEFLO [3858:651041] ***由于未捕获exception'NSInternalInconsistencyException',原因:'无法执行标识符'showSTPS'。 一个segue必须有一个performHandler或者必须重写 – 执行。

任何build议如何做将不胜感激 – 请注意,这是为swift2 / ios9

-Yogi

确保在故事板中,seguetypes未设置为自定义。 如果将其设置为自定义,则需要提供自定义的Segue类。

Swift版本:

 class CustomSegue: UIStoryboardSegue { override func perform() { let src = self.sourceViewController let dst = self.destinationViewController src.navigationController?.pushViewController(dst, animated: true) } } 

如果您的segue设置为“Custom”,则需要覆盖执行方法。 你可以按照这个例子 。

基本上创build一个inheritance自UIStoryboardSegue的类,如下所示:

MyCustomSegue.h

 @interface MyCustomSegue : UIStoryboardSegue @end 

MyCustomSegue.m

 @implementation MyCustomSegue - (void) perform { UIViewController *src = (UIViewController *) self.sourceViewController; UIViewController *dst = (UIViewController *) self.destinationViewController; [src.navigationController pushViewController:dst animated:YES]; } @end 

我认为这个代码可以为你工作。

不要叫超级…

 class CustomSegue: UIStoryboardSegue { override func perform() { // super.perform() NOOO or crash! let src = self.sourceViewController let dst = self.destinationViewController src.navigationController?.pushViewController(dst, animated: true) } }