UINavigationController: как удалить представление стека - PullRequest
8 голосов
/ 07 апреля 2010

Допустим, вот мой макет стека

View3     --> Top of the stack
View2
View1
HomeView  --> Bottom of the stack

Итак, я нахожусь в View3, и теперь, если я нажму кнопку Home, я хочу загрузить HomeView, то есть мне нужно всплыть View3, View2 и View1. Но если я выскочу View3, будет отображаться View2. Я этого не хочу. Я хочу, чтобы View3, View2 и View1 были удалены, и будет отображаться HomeView. Есть идеи как?

Ответы [ 3 ]

16 голосов
/ 07 апреля 2010

Вы можете использовать popToRootViewControllerAnimated: , чтобы получить доступ к корневому контроллеру представления.Это выскочит все контроллеры представления в стеке, кроме корневого контроллера представления.В вашем случае это будет HomeView .

[self popToRootViewControllerAnimated:YES];

Чтобы перейти к определенному представлению в стеке, вы можете использовать popToViewController: animated: Предполагая, что вы хотите получить третий контроллер вида (снизу вверх).В вашем случае это будет view2 :

NSArray* viewControllersInStack = self.navigationController.viewControllers;
UIViewController* targetViewController = [viewControllersInStack objectAtIndex:2];
[self.navigationController popToViewController:targetViewController animated:YES];
2 голосов
/ 07 апреля 2010

Использование popToViewController

[self.navigationController popToViewController:homeView animated:YES];
0 голосов
/ 08 апреля 2010

использовать ...

[self.navigationController popToRootViewControllerAnimated: YES];

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