Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iOS 6 - can i return data when i unwind a segue?

Tags:

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?

like image 784
Mark Tyers Avatar asked Oct 23 '12 20:10

Mark Tyers


People also ask

What does unwind segue do?

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.


2 Answers

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]; } 
like image 175
Mark Tyers Avatar answered Sep 21 '22 11:09

Mark Tyers


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.

like image 27
Jeff Avatar answered Sep 20 '22 11:09

Jeff