Unwind Segue for UINavigationController

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.

  • swift: segue on button click
  • Storyboard segues causing memory leaks
  • Passing variables between Storyboards without Segues - Swift
  • PerfomSegue's in UITableViewCell Class
  • Passing data from annotations to detail view iOS using storyboard
  • SplitViewController with a Login View Controller as the root
  • 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;
    }
    

    Solutions Collect From Internet About “Unwind Segue for UINavigationController”

    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.