Теперь мое приложение работает хорошо с пользовательский навигационный контроллер, который программно добавляет представления в стек, но есть одна проблема: когда я пытаюсь вернуться к предыдущему представлению с помощью кнопки «Назад» на панели инструментов, он всегда возвращается к корню, проходя через все дочерние представления. по одному.
Вот обзор текущей настройки:
Контроллер навигации –
Код: Выделить всё
class NavigationController: ObservableObject {
@Published var homeNavPath: [AppView] = []
public func navigateTo(destination: AppView) {
homeNavPath.append(destination)
}
Код: Выделить всё
NavigationStack(path: $navController.homeNavPath) {
HomeView()
}
Код: Выделить всё
public struct HomeView: View {
@EnvironmentObject var navController: NavigationController
public var body: some View {
Text("GO TO POST").onTapGesture {
navController.navigateTo(PostView("123"))
}
}
}
public struct PostView: View {
@EnvironmentObject var navController: NavigationController
public var body: some View {
Text("GO TO USER").onTapGesture {
navController.navigateTo(UserView("123"))
}
}
}
public struct UserView: View {
@EnvironmentObject var navController: NavigationController
public var body: some View {
Text("USER INFORMATION...")
}
}
Вот пример: здесь я нажимаю кнопку «Назад» только один раз:
пример навигационного gif
Дайте мне знать, если есть дополнительная информация, которая может помочь, и спасибо за любые предложения
Подробнее здесь: https://stackoverflow.com/questions/777 ... ps-to-root