在UINavigationController堆栈中"弹出"多个视图控制器

Oha*_*gev 8 release view uinavigationcontroller ios

在我的应用程序中,我正在实施UINavigationController.有几个UIViewControllers被推入堆栈.

当我到达最后一个时,我希望(在用户操作时)弹出除第一个之外的所有UIViewControllers UIViewController.我怎么做?

我知道如何弹出最后一个,但我如何指示所有以前的那些也消失了?

phi*_*phi 22

你可以尝试popToRootViewControllerAnimated:,popToViewController:animated:popViewControllerAnimated:在邮件的UINavigationController的类.


小智 9

在你的情况下,popToRootViewcontrollerAnimated:按照Irene的建议使用它真的很有用,但是如果有人需要弹出确切数量的控制器,那么下面的代码可能很有用:

- (void) popControllersNumber:(int)number
{
    if (number <= 1)
        [[self navigationController] popViewControllerAnimated:YES];
    else
    {
        NSArray* controller = [[self navigationController] viewControllers];
        int requiredIndex = [controller count] - number - 1;
        if (requiredIndex < 0) requiredIndex = 0;
        UIViewController* requireController = [[[self navigationController] viewControllers] objectAtIndex:requiredIndex];
        [[self navigationController] popToViewController:requireController animated:YES];
    }
}
Run Code Online (Sandbox Code Playgroud)