Я никогда не пробовал, но это должно работать:
// create instance of new view controller
MyViewController *myViewController = [[MyViewController alloc] init];
// get current stack of viewControllers from navigation controller
NSMutableArray *viewControllers = [[self.navigationController viewControllers] mutableCopy];
// replace top view controller in stack
[viewControllers replaceObjectAtIndex:([viewControllers count] - 1) withObject:myViewController];
// set modified stack of view controllers in navigation controller
[self.navigationController setViewControllers:viewControllers animated:YES];
В соответствии с документами ваше приложение перейдет на новый контроллер представления с push-анимацией, итогда, когда нажата кнопка «Назад», это будет выглядеть так, как будто контроллер вида, из которого вы нажали, никогда не был там.(Если вы не хотите анимацию, используйте animated:NO
)