Xcode, where to assign the segue identifier

Segue Identifier is not the same as storyboard ID, storyboard ID used when you want to create a View Controller based on that specific storyboard -and it has to be unique, unlike the segue identifier-.

If you already know how to create a segue, you can skip this part.

Adding a segue between two viewControllers:

From the Interface Builder, press the ctrl and drag between the two View Controllers that you want to link (make sure that you are dragging from the view controller itself, not the its main view). You should see:

enter image description here

Choose the “Show” -for instance-, the output should look like this:

enter image description here

As shown above, the arrow that surrounded by the red rectangle is the segue.

Additional note: if you selected the “Show” option, you have to embed your first view Controller in a Navigation Controller (select your first viewController -> Editor -> Embed In -> Navigation Controller), the output should looks like:

enter image description here

Because the “Show” means pushing into a navigation controller stack.

Assigning an identifier for the segue:

Select the segue, from the attribute inspector you’ll see “Identifier” text field, that’s it! make sure to insert the exact same name that used in performSegueWithIdentifier.

If you don’t know where to find the attribute inspector, it is on the top right looks like:

enter image description here


Furthermore:

For adding multiple segues from one View Controller, follow the same process (ctrl + drag from the first controller to each other View Controller), the output should looks like:

enter image description here

In this case, you might face the issue how to recognize which segue has been performed, overriding prepare(for:sender:) method is the solution, you can make the checking based on the segue identifier property:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if (segue.identifier == "firstSegueIdentifier") {
        // ...
    } else if (segue.identifier == "secondSegueIdentifier") {
        //...
    }
}

which would be the name that you have added to the segue in the storyboard.

Leave a Comment