Reputation: 113
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
Upvotes: 10
Views: 15514
Reputation: 1767
Swift version:
class CustomSegue: UIStoryboardSegue {
override func perform() {
let src = self.sourceViewController
let dst = self.destinationViewController
src.navigationController?.pushViewController(dst, animated: true)
}
}
Upvotes: 5
Reputation: 11646
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)
}
}
Upvotes: 1
Reputation: 5791
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.
Upvotes: 3
Reputation: 486
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.
Upvotes: 47