8

Пусть говорят здесь мой стек макетUINavigationController: Как удалить вид стека

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

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

ответ

16

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

[self popToRootViewControllerAnimated:YES]; 


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

NSArray* viewControllersInStack = self.navigationController.viewControllers; 
UIViewController* targetViewController = [viewControllersInStack objectAtIndex:2]; 
[self.navigationController popToViewController:targetViewController animated:YES]; 
+0

У меня есть домашний просмотр как root в примере, но это не так в моем коде. TYVM :) –

+0

Я пробую это, но он сказал, что «HomeView» не определен, что имеет смысл, так как я нахожусь в «View3», поэтому я не имею ссылку на «HomeView», так ли это? –

+0

Да, вам нужна ссылка на 'HomeView', и вы можете получить это через свойство' self.navigationController.viewControllers' –

2

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

[self.navigationController popToViewController:homeView animated:YES]; 
+0

Как это работает? В документации говорилось, что вы попадаете в определенный viewController, но я продолжаю получать seg-ошибку. U думаю, вы можете дать мне быстрый пример кода? –

+0

Это всплывающее представление, пока определенный viewController не окажется в верхней части стека. Можете ли вы опубликовать журнал ошибок и некоторые из вашего кода? – Bird

+0

Ну, скажем, что я нахожусь в 'aViewController' (предположим, что он уже находится в стеке), я нажимаю' bViewController', затем в 'bViewController', я' popToViewController: aViewController', но он сказал, что 'aViewController' не определен , что имеет смысл, так как теперь я нахожусь в 'bViewController'. У меня нет ссылки на 'aViewController'. Я что-то упускаю? –

0

использование ...

[self.navigationController popToRootViewControllerAnimated: YES];

Смежные вопросы