Где разместить глобальный NavigationPath в SwiftUIIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Где разместить глобальный NavigationPath в SwiftUI

Сообщение Anonymous »

Сейчас я разрабатываю приложение с использованием NavigationStack. Интересно, куда мне следует поместить переменную NavigationPath, чтобы можно было изменить ее где угодно.
Я пытался поместить ее в корневое представление как переменную 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»