«Popping» несколько контроллеров представления в стеке UINavigationController - PullRequest
8 голосов
/ 05 июля 2011

В моем приложении я реализую UINavigationController. Есть несколько UIViewControllers, которые помещаются в стек.

Когда я доберусь до последнего, я хочу, чтобы (после действий пользователя) все UIViewControllers были вытолкнуты, кроме первого UIViewController. Как мне это сделать?

Я понимаю, как открыть последний, но как я могу также дать указание всем предыдущим исчезнуть?

Ответы [ 3 ]

22 голосов
/ 05 июля 2011

Вы можете попробовать сообщения popToRootViewControllerAnimated:, popToViewController:animated: и popViewControllerAnimated: класса UINavigationController .

9 голосов
/ 15 января 2013

В вашем случае действительно полезно использовать popToRootViewcontrollerAnimated:, как предложено Ирен, но если кому-то нужно указать точное количество контроллеров, тогда может пригодиться следующий код:

- (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];
    }
}
3 голосов
/ 11 июня 2013

Используйте

 TravelViewController *travelView = [self.navigationController.viewControllers objectAtIndex:self.navigationController.viewControllers.count-3];
 [self.navigationController popToViewController:travelView animated:YES];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...