Вот метод возврата двух контроллеров представления, который имеет аналогичную проблему с вашим текущим контроллером представления и его свойством navigationController, исчезающим, как только вы делаете первое всплывающее окно:
// pop back 2 controllers on the stack to the setup screen
//
// locally store the navigation controller since
// self.navigationController will be nil once we are popped
//
UINavigationController *navController = self.navigationController;
// retain ourselves so that the controller will still exist once it's popped off
//
[[self retain] autorelease];
// Pop back 2 controllers to the setup screen
//
[navController popViewControllerAnimated:NO];
[navController popViewControllerAnimated:YES];
в качестве альтернативы, вы можете напрямую "party" на стеке контроллеров навигации контроллеров представления:
setViewControllers: animated: заменяет
контроллеры представления в настоящее время управляются
навигационным контроллером с
указанные предметы.
- (void) setViewControllers: (NSArray *) viewControllers animated: (BOOL) animated Параметры
viewControllers Контроллеры представления
поместить в стек.
Порядок следования контроллеров
в этом массиве представляет новый
порядок сверху вниз контроллеров
в стеке навигации. Таким образом
последний добавленный в массив элемент становится
верхний элемент стека навигации.
анимированный Если ДА, анимируйте нажатие
или выскочить из контроллера вид сверху.
Если НЕТ, замените контроллеры вида
без каких-либо анимаций. Обсуждение Вас
можно использовать этот метод для обновления или
заменить текущий контроллер вида
стек без толкания или выталкивания каждого
Контроллер явно. К тому же,
этот метод позволяет обновить набор
контроллеры без анимации
изменения, которые могут быть уместны в
время запуска, когда вы хотите вернуться
навигационный контроллер для
предыдущее состояние.
Если анимации включены, этот метод
решает, какой тип перехода к
выполнять в зависимости от того, последний элемент
в массиве элементов уже находится в
стек навигации. Если вид
контроллер в данный момент находится в стеке,
но это не самый главный предмет, это
метод использует поп-переход; если это
самый верхний элемент, без перехода
выполнила. Если контроллер представления
не в стеке, этот метод использует
толчок переход. Только один переход
выполняется, но когда этот переход
заканчивается, все содержимое
стек заменяется новым видом
контроллеры. Например, если
контроллеры A, B и C находятся на
стек и вы устанавливаете контроллеры D, A,
и B, этот метод использует поп
переход и результирующий стек
содержит контроллеры D, A и B.
Доступность Доступно в iOS 3.0 и
потом. Объявлен в
UINavigationController.h
Итак, чтобы «скрыть» контроллер представления непосредственно под вами в стеке навигации, в viewDidLoad контроллера представления, вы можете сделать это:
NSMutableArray *VCs = [self.navigationController.viewControllers mutableCopy];
[VCs removeObjectAtIndex:[VCs count] - 2];
self.navigationController.viewControllers = VCs;