Я пытался поместить ее в корневое представление как переменную State, но мне кажется сложным изменить его внутри глубоко вложенных представлений.
Код: Выделить всё
struct RootView: View {
@State var path = NavigationPath()
var body: some View {
NavigationStack(path: $path) {
// ...
}
}
}
struct SubView: View {
var body: some View {
Button("Push to root") {
// how should I access `path` from here?
}
}
}
< pre class="lang-swift Prettyprint-override">
Код: Выделить всё
class Router: ObservableObject {
static var shared = Router()
@Published var path = NavigationPath()
}
struct RootView: View {
@ObservedObject var router = Router.shared
var body: some View {
NavigationStack(path: $router.path) {
// ...
}
}
}
struct SubView: View {
@ObservedObject var router = Router.shared
var body: some View {
Button("Push to root") {
router.path = []
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/748 ... in-swiftui