Swiftui PresentationMode.Disclose在ForEach中使用多个导航链接时的奇怪行为

Swiftui PresentationMode.Disclose在ForEach中使用多个导航链接时的奇怪行为,swiftui,swiftui-navigationlink,ios-navigationview,Swiftui,Swiftui Navigationlink,Ios Navigationview,我的应用程序有4个视图(我们称它们为View\u A[root]->View\u B->View\u C->View\u D)。它们之间的导航是使用NavigationView/NavigationLink进行的 当我从最后一个视图(视图D)调用self.presentationMode.wrappedValue.disease()时,我希望它只关闭当前视图(D),但出于某种原因,它关闭了所有视图并停止在视图A(根视图) 真奇怪。 我花了几个小时试图弄清楚那里发生了什么,我发现了 -如果我从“视

我的应用程序有4个视图(我们称它们为View\u A[root]->View\u B->View\u C->View\u D)。它们之间的导航是使用NavigationView/NavigationLink进行的

当我从最后一个视图(视图D)调用self.presentationMode.wrappedValue.disease()时,我希望它只关闭当前视图(D),但出于某种原因,它关闭了所有视图并停止在视图A(根视图)

真奇怪。 我花了几个小时试图弄清楚那里发生了什么,我发现了 -如果我从“视图”中删除“ForEach”,它将正常工作,并且只有最后一个视图被取消。即使在本例中ForEach只获得一个静态对象

第二件奇怪的事是

-如果我不将“self.thisSession.stats”更改为false,它也可以正确工作,只忽略最后一个视图。

这非常奇怪,因为View_A(据我所知)不依赖于这个session环境变量

关于如何防止View_C和View_B在本案中被驳回,您有何想法?单击链接后,我想在查看\u C结束,而不是在查看\u A结束

感谢您的帮助,我花了一段时间才找到它的来源,但我不够聪明,无法继续下去;)

导入快捷界面
结构A_视图:视图{
@环境对象变量thisSession:CurrentSession
var body:一些观点{
导航视图{
VStack{
文本(“视图A”)
ForEach([TestObject()],id:\.id){in
NavigationLink(目标:View_B()){
文本(“移动到视图B”)
}
}
}
}
}
}
结构视图:视图{
var body:一些观点{
导航视图{
导航链接(目的地:视图_C()
) {
文本(“转到视图C”)
}
}
}
}
结构视图:视图{
var body:一些观点{
ZStack{
导航视图{
NavigationLink(目标:View_D()){
文本(“转到视图D”)
}
}
}
}
}
结构视图:视图{
@环境对象变量thisSession:CurrentSession
@环境(\.presentationMode)变量presentationMode:绑定
var body:一些观点{
ZStack{
VStack{
按钮(操作:{
self.thisSession.stats=false
self.presentationMode.wrappedValue.discouse()文件
}) {
文本(“返回!”)
}
}
}
}
}
类CurrentSession:ObservableObject{
@已发布的var统计:Bool=false
@已发布的var用户:String=“user”
}
结构测试对象:可识别、可编码{
设id=UUID()
}
您的问题在于:

NavigationView
整个视图堆栈中应该只有一个
NavigationView
。尝试从视图B和C中删除
NavigationView

NavigationView