I have created a simple unwind segue using the storyboard tools. I have created the following event handler in the view I want to unwind to:
-(IBAction)quitQuiz:(UIStoryboardSegue *)segue { NSLog(@"SEGUE unwind"); }
This fires correctly and unwinds the segue (the message gets logged).
When the user quits the quiz I would like to pass some data back and have been struggling with how to achieve this. Can anyone advise?
To handle the dismissal of a view controller, create an unwind segue. Unlike the segues that you use to present view controllers, an unwind segue promises the dismissal of the current view controller without promising a specific target for the resulting transition.
Thanks Jeff. After watching WWDC video 407 I have a clear solution.
In the view controller that is the target of the unwind you should create a method that takes a single UIStoryboardSegue parameter and returns an IBAction. The UIStoryboardSegue has a method to return the source view controller! Here is the example taken from the video (credit to Apple).
- (IBAction)done:(UIStoryboardSegue *)segue { ConfirmationViewController *cc = [segue sourceViewController]; [self setAccountInfo:[cc accountInfo]]; [self setShowingSuccessView:YES]; }
Getting data back from an unwind segue is explained very nicely in this apple talk, second half of the presentation (edit: starts from 37:20)
In particular, in an unwind segue the [segue sourceViewController] is the still active view controller from which the unwind event originated, so just access your properties as usual.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With