2016-11-28 2 views
0

Это как мои контроллеры просматривать структурированы в раскадровке:Как очистить навигационный стек, чтобы кнопка «Назад» не отображалась?

navController1 -> viewController1 -> viewController2 -> viewController3 

У меня есть SEGUE от viewController3 обратно viewController1. Таким образом, когда пользователь переходит на viewContoller1, кнопка возврата отображается на навигационной панели (как и ожидалось). Однако в моем случае я не хочу, чтобы пользователь возвращался к viewController3, от viewController1. Я хочу снова начать с viewController1. Есть ли способ очистить стек после перехода на viewController1, чтобы кнопка «Назад» не появилась?

(Обратите внимание, что navController1 не мой корневой контроллер, у меня есть некоторые другие контроллеры перед ним.)

ответ

0

У вас есть член navigationController. На самом деле это стопка вложенных контроллеров. Очистите стек, и вы получите нужный результат. Для этого установите пустой список в диспетчер навигации навигации .viewControllers в последнем контроллере просмотра. Надеюсь, это поможет вам найти решение.

+0

Есть другие времена, когда мне нужна кнопка назад, чтобы отображать на контроллере вида1. Только когда я выхожу из viewcontroller3, теперь мне нужна кнопка «Назад». Могу ли я применить свой код в методе prepareForSegue в viewcontroller3? – Prabhu

+0

Вы можете изменять стеки по своему усмотрению, когда находитесь в контроллере просмотра. Стек может быть опустошен, но также изменен (например, если у вас есть 4 контроллера вида, вы можете удалить 2 из них). Если вам нужны более сложные ситуации, вы должны начать с моего намека и попробовать. Имейте в виду, что у вас есть также 2 списка для правой и левой кнопок навигационного контроллера. Вы также можете добавлять и удалять кнопки из этих списков. – Sergiob

+0

Спасибо. Как я могу сказать в viewController1, что я пришел из viewController3? Извините, я довольно новичок в Swift. – Prabhu

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