首页 > 解决方案 > @EnvironmentObject 在模态表上使用时消失

问题描述

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

实际错误:

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

它不会一直发生,但发现它并不难重现。有谁知道修复?

标签: swiftuimodal-dialog

解决方案


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

更详细地说:

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

var body: some View {
    VStack {
        // ...
    }
    .sheet(isPresented: $isSheetPresented) {
        OtherView()
            .environmentObject(currentEnvironment)
    }
}

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

关于这种情况,我曾经读到它在某种程度上是一个错误。但我也读到这是有意的。对我来说,这似乎是一个错误,因为它发生的条件对我来说感觉不对。


推荐阅读