Переход к ViewController в стеке UINavigationController

Переход к ViewController в стеке UINavigationController

Как вы видите на изображении выше, у меня есть контроллер представления (A) с переходом к контроллеру навигации. Я хочу выполнить этот переход, который приведет меня к просмотру контроллера (B). Я знаю, что некоторые из вас скажут, что просто переходите между (A) и (B), но это не то, что я хочу.

Я хочу иметь возможность вернуться не к (A), а к предыдущему контроллеру представления в стеке контроллеров навигации.

Заранее спасибо.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
67
3

Ответы 3

У вас есть 2 варианта

1-

сделайте переход к navigationController и в VC, который находится перед B, установите флаг, скажем, в viewDidLoad и нажмите VCB

2-

в коде создайте navigationController

let nav = /////

nav.viewControllers = [beforeBVC,VCB]

Мне нравится второй. Но я не знаю, как я смогу перейти к VCB, если я устанавливаю другой VC перед ним в nav.viewControllers. Возможно ли это, или мне нужно сделать больше шагов, чтобы это сделать.

ahagbani 01.07.2018 15:28

VCB имеет индекс 1, поэтому он является вершиной стека, когда вы представляете его из VC, который является источником перехода B, будет отображаться

Sh_Khan 01.07.2018 15:31

будет показано, что спина возвращается от B к VC перед этим

Sh_Khan 01.07.2018 15:41

Возможно, вы могли бы напрямую вставить ViewController в стек навигации.

self.navigationController?.pushViewController(viewController2, animated: true)

Это просто модификация ответа Sh_Khan. Его ответ был правильным, и я попробовал оба его метода, чтобы добиться того, о чем прошу, и мне это удалось.

Однако я понял, что мне действительно не нужно ни создавать контроллер навигации программно, ни устанавливать флаг и проверять viewDidLoad.

Все, что мне нужно сделать, это применить его второй метод внутри функции prepareForSegue.

Пример:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let navController = segue.destination as! UINavigationController
    let BVC = UIStoryboard(name:"Main", bundle:nil).instantiateViewController(withIdentifier: "BVC")
    navController.viewControllers.append(BVC)
}

Все заслуги Ш_Хана, так как он действительно дал ответ. Спасибо.

Другие вопросы по теме