I found that in order to implement a custom unwind mode, I had to subclass the UINavigationController and override this method as follows:
-(UIStoryboardSegue *)segueForUnwindingToViewController:(UIViewController *)toViewController fromViewController:(UIViewController *)fromViewController identifier:(NSString *)identifier {
UIViewController *controller = self.topViewController;
UIStoryboardSegue *unwindSegue;
if ([controller isKindOfClass:[YourClassThatNeedsCustomUnwind class]]) {
unwindSegue = [controller segueForUnwindingToViewController:toViewController fromViewController:fromViewController identifier:identifier];
}
if (unwindSegue) {
return unwindSegue;
} else {
return [super segueForUnwindingToViewController:toViewController fromViewController:fromViewController identifier:identifier];
}
}
UIViewController, segue, :
- (UIStoryboardSegue *)segueForUnwindingToViewController:(UIViewController *)toViewController fromViewController:(UIViewController *)fromViewController identifier:(NSString *)identifier {
YourCustomUnwindSegue *segue = [[YourCustomUnwindSegue alloc] initWithIdentifier:identifier source:fromViewController destination:toViewController];
return segue;
}
, UIStoryboardSegue "- (void) :" ( ) ".
- (void)perform
{
UINavigationController *containerVC = (UINavigationController*)[self.destinationViewController parentViewController];
[containerVC popToViewController:self.destinationViewController animated:NO];
}
, -.