Skip to content

Instantly share code, notes, and snippets.

@a2ikm
Created July 25, 2013 11:33
Show Gist options
  • Save a2ikm/6078888 to your computer and use it in GitHub Desktop.
Save a2ikm/6078888 to your computer and use it in GitHub Desktop.
Subclass of UINavigationController which keeps the view controller outgoing over push/pop for UINavigationControllerDeletgate's navigationController:willShowViewController:animated:. The view controller can be referenced like `navigationController.outgoingViewController`.
#import <UIKit/UIKit.h>
@interface A2NavigationController : UINavigationController
{
UIViewController *_outgoingViewController;
}
- (UIViewController *)outgoingViewController;
@end
#import " A2NavigationController.h"
@implementation A2NavigationController
- (id)initWithRootViewController:(UIViewController *)rootViewController
{
self = [super initWithRootViewController:rootViewController];
if (self) {
_outgoingViewController = nil;
}
return self;
}
- (UIViewController *)outgoingViewController
{
return _outgoingViewController;
}
- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated
{
_outgoingViewController = self.visibleViewController;
NSArray *ret = [super popToRootViewControllerAnimated:animated];
_outgoingViewController = nil;
return ret;
}
- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated
{
_outgoingViewController = self.visibleViewController;
NSArray *ret = [super popToViewController:viewController animated:animated];
_outgoingViewController = nil;
return ret;
}
- (UIViewController *)popViewControllerAnimated:(BOOL)animated
{
_outgoingViewController = self.visibleViewController;
UIViewController *ret = [super popViewControllerAnimated:(BOOL)animated];
_outgoingViewController = nil;
return ret;
}
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
_outgoingViewController = self.visibleViewController;
[super pushViewController:viewController animated:animated];
_outgoingViewController = nil;
}
@end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment