У меня есть панель управления панелью (с нижним меню), а также верхнее меню. Проблема в том, что я не хочу связывать желтые и зеленые представления с панелью вкладок (потому что пользователь собирается менять представления, используя верхнее меню, а не нижнее меню).Показать контроллер просмотра, который уже находится в навигационном стеке
У меня проблема, что каждый раз, когда я нажимаю кнопки, новый экземпляр представления собирается стекаться (так что я получаю что-то вроде V1 -> V2 -> V3 -> V2 -> V4 и так на)
Моего частичным решения, чтобы сделать что-то вроде этого:
@IBAction func yellowViewButtonAction(_ sender: AnyObject)
{
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "YelloViewController") as! YelloViewController
if let viewControllers = navigationController?.viewControllers {
for viewController in viewControllers {
// some process
if viewController is YelloViewController {
print("View is on stack")
}
}
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "YelloViewController") as! YelloViewController
self.navigationController?.pushViewController(controller, animated: false)
}
}
Я могу видеть, что мнение о навигации стеке, поскольку if
оператор внутри for
является true
. Вопрос в том, как я могу получить его вместо того, чтобы нажимать новый экземпляр одного и того же представления? (Потому что помимо огромной проблемы с памятью, что это настоящее, я также теряю любые данные, которые я имел в представлении).
Я хочу сохранить все на стеке неповрежденным.
Пример:
V1 -> V2 -> V3 -> В4 (текущий вид)
Если я вернусь к V1 от V4 я все еще хочу иметь V4, V3 и V2 на навигационном контроллере стек.
Другой вопрос: если это решение - это то, что Apple может отказать.
Я ценю любую помощь.
я нужен Навигационный контроллер, потому что тогда, когда я нажать на желтый и зеленый взгляды я все еще можно увидеть в меню нижней панели. Как я сказал, я хочу, чтобы взгляды оставались нетронутыми, если я поплю, я потеряю все данные в представлении. – Adrian
Вам не нужен навигационный контроллер, чтобы видеть нижние панели меню. Посмотрите на учебник по ссылке, и вы увидите :) Также код, который я предоставил, только перемещает представления, поэтому «внутреннее» состояние этих контроллеров просмотров остается неизменным. – repoguy
Что я пытаюсь сказать, так это то, что я не хочу настраивать нижние панели меню, потому что у меня уже есть один. Я хочу иметь возможность изменять виды betweens, которые находятся в стеке контроллера навигации. – Adrian