7
votes

I have a simple UINavigationController which pushes a UIViewController onto the stack via a custom segue. I then implemented an IBAction on the first UIViewController to perform an unwind action and I implement segueForUnwindingToViewController. Unfortunately, the segueForUnwindingToViewController is not being called (I did confirm that canPerformUnwindSegue is being called on the first VC).

I have not seen any simple examples of this behavior. Can anyone please help? Thanks.

Here's the code from the root view controller of the NavigationController.

- (IBAction) unwindFromSegue:(UIStoryboardSegue *)segue {
// unwinds back to here
//[self performSegueWithIdentifier:@"UnwindToObjectManageSegue" sender:self];

}

- (BOOL)canPerformUnwindSegueAction:(SEL)action fromViewController:(UIViewController *)fromViewController
                     withSender:(id)sender {
return YES;
}

- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender {
return YES;
}

- (UIStoryboardSegue *)segueForUnwindingToViewController:(UIViewController *)toViewController
                                  fromViewController:(UIViewController *)fromViewController
                                          identifier:(NSString *)identifier {
ObjectManageObjectDetailSegue *segue = [[ObjectManageObjectDetailSegue alloc] initWithIdentifier:identifier source:fromViewController destination:toViewController];
[segue setUnwinding:YES];
return segue;
}
1
I assume that you followed the steps from this answer but things did not work for you, correct?Sergey Kalinichenko
That's correct. I followed that to a T. Unfortunately, my unwind segue is not being called. The identifier is being sent correctly, but it the segue itself is never invoked.Clay
It would be great if someone could maybe post a sample project which exemplifies what was posted in that thread. I think it's a great example, but it's rather spread out.Clay
Where are you trying to unwind to? You say you're unwinding from the first view controller. Do you mean the root view controller of the navigation controller?rdelmar
Please post your code for the unwind method.iOSGuru248

1 Answers

23
votes

I had the same problem and I finally found a solution: https://github.com/simonmaddox/CustomUnwindSegue

He also had a problem with it not being called. Turns out that any view controller that is in a UINavigationController will not call the presenting view controller but the UINavigationController instead. This means you must subclass that UINavigationController and add that method there instead.