How to remove a specific view controller from uinavigationcontroller stack?
NSMutableArray *allViewControllers = [NSMutableArray arrayWithArray: navigationController.viewControllers];[allViewControllers removeObjectIdenticalTo: removedViewController];navigationController.viewControllers = allViewControllers;
Here is my solution. You can set the tag or a fixed property to your viewcontrollers, then you could traverse the uinavigationcontroller stack to search the target viewcontroller(vcToRemove) and remove it. This could be safer. The code:
NSInteger tag = vcToRemove.wvTag;NSMutableArray *allViewControllers = [NSMutableArray arrayWithArray: vcToRemove.navigationController.viewControllers]; int i = 1; for (i = 1; i <=[allViewControllers count]; i++) { UIViewController *vc = [allViewControllers objectAtIndex:i]; if ([vc isKindOfClass:[MyWebViewController class]]) { if (((MyWebViewController *)vc).wvTag == tag) { [allViewControllers removeObjectAtIndex:i]; break; } } } vcToRemove.navigationController.viewControllers = allViewControllers;