我是新手
我的 xcode 版本是 11.2.1,swift 是 5.1.2
当我在 MasterView 中使用 NavigationView 时,我有两个 DetailViews
我想在第一个DetailView关闭时自动进入第二个DetailView
这是我的方法,但失败了。
每当我进入第二个DetailView,
它会立即自动返回到 MasterView
https://i.stack.imgur.com/9voJA.gif
这是我的代码
struct MasterView: View {
@State var tag: Int? = nil
var body: some View {
NavigationView{
VStack{
NavigationLink(destination: DetailView1(tag: self.$tag), tag: 1, selection: self.$tag) {
EmptyView()
}
NavigationLink(destination: DetailView2(tag: self.$tag), tag: 2, selection: self.$tag) {
EmptyView()
}
Button(action: {
self.tag = 1
}) {
Text("press here to enter DetailView1")
}
}
}
}
}
struct DetailView1: View {
@Binding var tag: Int?
var body: some View {
VStack{
Text("DetailView 1")
}
.navigationBarBackButtonHidden(true)
.navigationBarItems(leading:
Button(action: {
self.tag = 2
}) {
HStack {
Image(systemName: "arrow.left.circle")
Text("Go Back")
}
})
}
}
struct DetailView2: View {
@Binding var tag: Int?
var body: some View {
VStack{
Text("DetailView 2 2 2 2 2 2 2")
}
.navigationBarBackButtonHidden(true)
.navigationBarItems(leading:
Button(action: {
self.tag = nil // never execute
}) {
HStack {
Image(systemName: "arrow.left.circle")
Text("Go Back")
}
})
}
}
我发现当第一个 DetailView 关闭时,“tag”变量将自动设置为“nil”
但我不知道为什么
请帮助我,谢谢
对不起我的英语很差