Swiftui @环境对象在模式工作表上使用时消失

Swiftui @环境对象在模式工作表上使用时消失,swiftui,modal-dialog,Swiftui,Modal Dialog,#SwiftUI中似乎存在一个bug,如果用户拉下一个模式表关闭它,但取消打开它的手势,@EnvironmentObject将不再可用 实际误差: SwiftUI:0:致命错误:未找到类型为的ObservableObject。的View.environmentObject(:)可能作为此视图的祖先丢失 这并不是一直都会发生,但发现复制并不太困难。有人知道修复方法吗?只需将.environmentObject(env)附加到显示的工作表中,它就可以修复您的问题 更详细地说: @environmen

#SwiftUI中似乎存在一个bug,如果用户拉下一个模式表关闭它,但取消打开它的手势,
@EnvironmentObject
将不再可用

实际误差:

SwiftUI:0:致命错误:未找到类型为的ObservableObject。的View.environmentObject(:)可能作为此视图的祖先丢失


这并不是一直都会发生,但发现复制并不太困难。有人知道修复方法吗?

只需将
.environmentObject(env)
附加到显示的工作表中,它就可以修复您的问题

更详细地说:

@environmentobject var currentEnvironment:SomeEnvironment
@状态变量isSheetPresented:Bool=false
var body:一些观点{
VStack{
// ...
}
.sheet(已提交:$isSheetPresented){
OtherView()
.environmentObject(当前环境)
}
}
若要再现问题,可以使用拖动手势将图纸拖到一半以关闭图纸,然后将其释放。(以不会关闭的方式…)


关于这种情况,我曾经读到它不知何故是一个bug。但我也读到这是有意的。对我来说,这似乎是一个bug,因为它发生的条件对我来说不合适。

您需要显式地将环境对象注入到工作表内容中,因为它位于不同的视图层次结构中。请参见此示例。很有趣,谢谢@Asperi。你能回答这个问题吗?我很乐意将它标记为已接受。