我已经实现了以下链接中找到的解决方案,以返回到我的根视图:
struct ContentView: View {
@State private var isActive: Bool = false
@AppStorage("setupComplete") var setupComplete = false
var body: some View {
NavigationView {
if setupComplete == false {
NavigationLink(
destination: ContentView2(isActive: self.$isActive),
isActive: self.$isActive) {
Text("Begin!")
}
}
else {
ContentView3(isActive: self.$isActive)
}
}
}}
struct ContentView2: View {
@Binding var isActive: Bool
var body: some View {
NavigationLink(
destination: ContentView3(isActive: self.$isActive)) {
Text("View Results")
}
}}
struct ContentView3: View {
@Binding var isActive: Bool
var body: some View {
VStack {
Button(action: {
self.isActive = false
}, label: {
Text("Reset - Perform setup again")
})
}
}}
这很好。 ContentView + ContentView2是“设置”屏幕,之后显示ContentView3,该屏幕显示该设置的结果
我正在设置一个@Appstorage变量(在另一个文件中),称为“ setupComplete”,以在应用启动时触发ContentView3的打开(如果用户之前已经执行过此设置)(因此,用户不必执行每次打开应用时进行设置)
但是,
如果我关闭应用程序,然后重新打开(在ContentView 3上),则单击“重置-重新执行设置”按钮不会使用户返回到根视图控制器(ContentView 1)以再次执行设置>
我该如何实现?
谢谢