我尝试使用 @EnvironmentObject 使用简单的包装器 ObservableObject 将 @Published 导航路径传递到 SwiftUI NavigationStack 中,并且代码构建没有问题,但使用 @EnvironmentObject 没有任何效果。这是一个仍然存在问题的简化示例:
import SwiftUI
class NavigationCoordinator: ObservableObject {
@Published var path = NavigationPath()
func popToRoot() {
path.removeLast(path.count)
}
}
struct ContentView: View {
@StateObject var navigationCoordinator = NavigationCoordinator()
var body: some View {
NavigationStack(path: $navigationCoordinator.path, root: {
FirstView()
})
.environmentObject(navigationCoordinator)
}
}
struct FirstView: View {
var body: some View {
VStack {
NavigationLink(destination: SecondView()) {
Text("Go To SecondView")
}
}
.navigationTitle(Text("FirstView"))
}
}
struct SecondView: View {
var body: …Run Code Online (Sandbox Code Playgroud)