Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

perform segue with identifier wont work in swift 2

Tags:

ios

iphone

swift2

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

like image 700
Alexander Yogi Macdonald Avatar asked Aug 31 '15 11:08

Alexander Yogi Macdonald


People also ask

How do I connect to segue in Swift?

The first step is to find the “Storyboard Reference” item in our library and add it to the storyboard we want to segue from. You'll also want to add the Storyboard name and View Controller's Storyboard ID that you want to segue to in the Attributes Inspector of the Storyboard Reference.

What is segue identifier?

Segue identifiers are plain strings. They are useful if we need to invoke the segue programmatically because they identify the segue. But in general, identifiers are used to pass information from one view controller to another.

How do I create a segue between view controllers in Swift?

Well, in addition to that, Ctrl+dragging also helps set up segues. So, Ctrl+Drag from the “Go to Other View Controller” button, to somewhere in the second View Controller. It can be anywhere in the main box of the second view controller. When you release, it will show you a box like the one below.


2 Answers

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.

like image 100
user3673027 Avatar answered Sep 28 '22 01:09

user3673027


Swift version:

class CustomSegue: UIStoryboardSegue {
    override func perform() {

        let src = self.sourceViewController
        let dst = self.destinationViewController
        src.navigationController?.pushViewController(dst, animated: true)
    }
}
like image 45
AMayes Avatar answered Sep 28 '22 01:09

AMayes