iPhone - viewController, вызывающий viewController - PullRequest
0 голосов
/ 22 августа 2011

У меня есть 3 viewController A, B и C.

Я нахожусь на vcA, и я нажимаю vcB, используя

[self.navigationController pushViewController:vcB animated:YES];

Пока vcB виден, я нажимаю vcC.

Теперь я нахожусь внутри vcC и хотел бы удалить (или выкинуть) одновременно vcC и vcB и перейти непосредственно к vcA. Я не хочу идти на vcB. Как мне это сделать?

Можно ли удалить vcB из стека без вывода сообщений, пока отображается vcC?

спасибо

Ответы [ 5 ]

2 голосов
/ 22 августа 2011

Если вы знаете, что A всегда является первым контроллером, который вы нажимаете, то вы должны сделать:

[self.navigationController popToRootViewControllerAnimated:YES]

Или, если в стеке до A могут быть другие контроллеры, вы можете сделать:

[self.navigationController popToViewController:viewControllerA animated:YES]

Ссылки .

2 голосов
/ 22 августа 2011

вы пробовали:

[self.navigationController popToRootViewControllerAnimated:YES];
2 голосов
/ 22 августа 2011

Я думаю, вы можете связываться с ними как с массивом

NSMutableArray *viewControllers = [NSMutableArray arrayWithArray: navigationController.viewControllers];
[viewControllers removeObjectIdenticalTo: removedViewController];
navigationController.viewControllers = viewControllers;
0 голосов
/ 22 августа 2011

Если A является корнем, popToRootViewController.

Если нет, если вы соблюдаете ограничения Apple в отношении недокументированного использования API, я бы предположил, что нет, вы не можете извлечь обе C и B из списка из C.

Любые прямые манипуляции со стеком представлений были бы хакерскими и приводили бы ко многим потенциальным проблемам

Лучше всего было бы установить глобальный флаг из C, открыть его, и в viewWillAppear B (появится, появится DID) вы проверяете состояние указанного флага, и, если установлен, сразу же попадаете в A.

Представление B не появится, и в худшем случае вызовет небольшое, вероятно, незаметное отставание между C и A.

0 голосов
/ 22 августа 2011

Вы можете просто позвонить -popToRootViewControllerAnimated: на свой UINavigationController ...

[self.navigationController popToRootViewControllerAnimated:YES];

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...