问题
I have been using this code to perform a custom segue when a user logs in to the application:
dispatch_async(dispatch_get_main_queue()){
self.performSegueWithIdentifier("showSTPS", sender: self)
}
I currently have this code in my perpareForSegue (im not totally sure if i need it)
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?){
if "showSTPS" == segue.identifier {
}
}
And I am getting the following error every time I try to perform the segue:
2015-08-31 11:56:28.998 ICEFLO[3858:651041] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not perform segue with identifier 'showSTPS'. A segue must either have a performHandler or it must override -perform.'
Any suggestions on what to do would be greatly appreciated - please note that this is for swift2/ios9
-Yogi
回答1:
Make sure that in your storyboard the segue type is not set to custom. If you set it to custom you'll need to provide your own custom segue class.
回答2:
Swift version:
class CustomSegue: UIStoryboardSegue {
override func perform() {
let src = self.sourceViewController
let dst = self.destinationViewController
src.navigationController?.pushViewController(dst, animated: true)
}
}
回答3:
If your segue is set to "Custom", you need to override the perform method. You can follow this example.
Basically create a class that inherits from UIStoryboardSegue, like this:
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
I think this code could work for you.
回答4:
do NOT call super...
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)
}
}
来源:https://stackoverflow.com/questions/32309909/perform-segue-with-identifier-wont-work-in-swift-2