重新绘制层次结构时,Swiftui presentationMode将被取消

重新绘制层次结构时,Swiftui presentationMode将被取消,swiftui,Swiftui,我正在处理一个编辑产品页面,该页面在其根目录中将模型作为状态,并将其作为绑定传递给子页面 在编辑页面中,根据是否设置了一个属性,我使用if语句来显示选择器或文本 问题是,如果我更新其中一个子页面中的模型,则在重新绘制层次结构时会调用presentatonMode.Dislose() 示例代码: struct A: View { @Binding var s: Bool var body: some View { NavigationLink(destinatio

我正在处理一个编辑产品页面,该页面在其根目录中将模型作为状态,并将其作为绑定传递给子页面

在编辑页面中,根据是否设置了一个属性,我使用if语句来显示选择器或文本

问题是,如果我更新其中一个子页面中的模型,则在重新绘制层次结构时会调用presentatonMode.Dislose()

示例代码:

struct A: View {
    @Binding var s: Bool

    var body: some View {
        NavigationLink(destination: AA(s: self.$s)) {
            Text("A")
        }
    }
}

struct AA: View {
    @Binding var s: Bool

    var body: some View {
        VStack {
            Text(s.description)
            Button(action: {
                self.s.toggle()
            }) {
                Text("toggle")
            }
        }
    }
}

struct B: View {
    var body: some View {
        Text("B")
    }
}

struct ContentView: View {

    @State var s: Bool = true

    var body: some View {
        NavigationView {
            VStack {
                if s == true {
                   A(s: self.$s)
                } else {
                    B()
                }
            }
        }
    }
}
正如在这里看到的,在AA子页面中,我只想更新状态并显示它,而不是调用Disclease并返回content view


这是因为我正在替换整个视图层次结构。我的错

等等。。。但是
@状态s
ContentView
中,切换它,您只需从视图层次结构中删除
A
(和子视图
AA
),将其替换为
B
。。。所有行为都符合设计要求(加上
NavigationView
引入的动画)。如果你期望一些不同的东西,那么代码应该是不同的。你是对的。我没有看到我的错误的全貌