我可以将 Bool 作为环境对象传递给 SwiftUI 中的子视图吗?

swi*_*nub 4 swift swiftui

我有一个布尔

@State var isDragging: Bool
Run Code Online (Sandbox Code Playgroud)

如何将其作为环境对象传递给子视图?

kon*_*iki 8

您需要创建一个 ObservableObject:

class Model: ObservableObject {
    @Published var isDragging: Bool = false
}
Run Code Online (Sandbox Code Playgroud)

然后使用:

struct MyView: View {
    @EnvironmentObject var mymodel: Model

    var body : some View {
        if mymodel.isDragging { ... }
    }
}
Run Code Online (Sandbox Code Playgroud)

另外,您应该观看 WWDC 2019 会议“Swift 中的数据流”。尽管某些类型名称已更改,但概念保持不变。

  • 我考虑过这一点,但我认为这对于单个变量来说太过分了。谢谢 (2认同)