Насколько я знаю, прямого метода для этого нет.
Конечно, вы можете создать нечто подобное из UINavigationControllerDelegate
, который вызывает -[UINavigationController popViewControllerAnimated:]
, пока вы не достигли корня стека, но в зависимости от того, насколько глубоко ваш стек растет и как часто вы хотите Это может привести к очень нарушению, если это не раздражает ваших пользователей.
То есть они ничего не могут сделать, кроме как сидеть и смотреть, как пролетают виды, пока вы переключаете один NavigationController за другим ...
Edit:
Извините за поздний ответ!
Упомянутый протокол делегата определяет метод с именем - navigationController:didShowViewController:animated:
. Если вы реализуете этот протокол в классе со свойством, скажем, shouldPopToRoot
, вы можете установить для него значение YES в действии, когда вы запускаете всплывающее окно.
Тогда указанный метод может иметь вид
-(void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
if ( self.shouldPopToRoot )
{
// Since this method gets called WHENEVER you pop a view-controller, you need
// to ensure that you stop popping if you've just shown the root-view-controller
if ( [navigationController.viewControllers itemAtIndex:0] == viewController )
self.shouldPopToRoot = NO;
else
[navigationController popViewControllerAnimated:YES];
}
}