Skip to content

Instantly share code, notes, and snippets.

@smileEvday
Last active August 29, 2015 14:07
Show Gist options
  • Save smileEvday/82f06b2b96b61bccc131 to your computer and use it in GitHub Desktop.
Save smileEvday/82f06b2b96b61bccc131 to your computer and use it in GitHub Desktop.
@interface MMNavController : UINavigationController
@property (nonatomic,readonly) BOOL canPushOrPop;
@property (nonatomic,readonly) id navLock;
@end
@implementation MMNavController
#pragma mark UINavigationController Overrides
-(void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated {
if ( self.canPushOrPop ) {
[super pushViewController:viewController animated:animated];
}
}
-(NSArray*)popToRootViewControllerAnimated:(BOOL)animated {
if ( self.canPushOrPop ) {
return [super popToRootViewControllerAnimated:animated];
}
else {
return @[];
}
}
-(NSArray*)popToViewController:(UIViewController *)viewController animated:(BOOL)animated {
if ( self.canPushOrPop ) {
return [super popToViewController:viewController animated:animated];
}
else {
return @[];
}
}
#pragma mark PUBLIC PROPERTIES
-(BOOL)canPushOrPop {
id navLock = self.navLock;
id topVC = self.topViewController;
return ( (! navLock) || (navLock == topVC) );
}
-(id)navLock {
return self.topViewController;
}
@end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment