@EnvironmentObject 在模态表上使用时消失

Ene*_*nso 7 modal-dialog swiftui

#SwiftUI 中似乎存在一个错误,@EnvironmentObject如果用户拉下模式表将其关闭,但取消手势使其保持打开状态,则该错误将不再可用。

实际错误:

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

这种情况并不总是发生,但发现重现并不难。有谁知道修复方法吗?

MrA*_*zaa 3

只需将 a 添加.environmentObject(env)到所提供的工作表中即可解决您的问题。

更详细地说:

@EnvrironmentObject var currentEnvironment: SomeEnvironment
@State var isSheetPresented: Bool = false

var body: some View {
    VStack {
        // ...
    }
    .sheet(isPresented: $isSheetPresented) {
        OtherView()
            .environmentObject(currentEnvironment)
    }
}
Run Code Online (Sandbox Code Playgroud)

要重现该问题,您可以使用拖动手势将工作表拖动到一半以将其关闭,然后释放它。(以一种不关闭的方式......)

关于这种情况,我曾经读到这是一个错误。但我也读到这是有意为之的。对我来说,这似乎是一个错误,因为它发生的情况对我来说不合适。