Выбор ответа Middle SwiftUI обновлено
Навигация в SwiftUI
Вопрос
Как в современном SwiftUI сделать программную навигацию с переходом на несколько экранов вглубь (deep link)?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: NavigationStack(path:) с путём и .navigationDestination(for:). С iOS 16 навигация описывается данными: стек хранит путь, а экраны определяются по типу значения в navigationDestination.
Варианты ответа
NavigationStack(path:)с путём и.navigationDestination(for:)правильный ответNavigationViewс цепочкой вложенныхNavigationLink(isActive:)- Вызвать
pushViewControllerуUIHostingControllerдля каждого экрана - Поменять
@Stateв корневой view на нужный экран и перерисовать её
Разбор
С iOS 16 навигация описывается данными: стек хранит путь, а экраны определяются по типу значения в navigationDestination. Чтобы открыть три экрана вглубь, достаточно записать три значения в путь. NavigationView и NavigationLink(isActive:) устарели. Вмешиваться в UIKit-навигацию из SwiftUI можно, но это обходной путь.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.