Imagine you have a sequence of views in your storyboard:
A -> ... -> Z
You want to have a button on view Z
which allows the user to go all the way back to A
.
So what you need to do is give the view that you want to back all the way out to, in this case, A
, an instance method which is marked as a IBAction
and takes in a single parameter of type UIStoryboardSegue *
. The name of the method and variable don't matter. What you do within the implementation doesn't matter, either. Here's an example:
Obj-C:
In A
's Interface (not Z
's):
- (IBAction)cancelSignup:(UIStoryboardSegue *)unwindSegue;
In A
's Implementation (not Z
's):
- (IBAction)cancelSignup:(UIStoryboardSegue *)unwindSegue {
// Only "implemented" to satisfy a respondsToSelector: search.
// You can actually implement more stuff here, if you want, IE, if
// you need to reach out to a server to mention that this screen was
// returned to from a later screen.
}
Swift:
In A
's source (not Z
's):
@IBAction func cancelSignup(unwindSegue: UIStoryboardSegue) {
// Only "implemented" to satisfy a respondsToSelector: search.
// You can actually implement more stuff here, if you want, IE, if
// you need to reach out to a server to mention that this screen was
// returned to from a later screen.
}
Now, within your storyboard, control drag from an element on Z
(IE, a cancel button) to Z
's Exit
. It'll scan through all of the views higher up in the view hierarchy which have an IBAction
that accepts only a single UIStoryboardSegue *
as an action and list them for you to pick from.
Hopefully this was more straight forward and helpful than the existing answers. I found that this link was particularly useful, so if there's a detail you're still fuzzy on after reading my answer, maybe this can help you (I tried to just condense all the useful info from this long article into a short answer):
http://www.freelancemadscience.com/fmslabs_blog/2012/9/24/advanced-storyboard-techniques.html