小编Wof*_*kee的帖子

如何设置多个相同类型的 EnvironmentObjects

我发现了这个问题SwiftUI: Putting multiple BindableObjects into Envionment

答案说 environmentObject(ObservableObject) 返回修改后的视图,因此我可以为多个 environmentObject 创建调用链。

喜欢

let rootView = ContentView()
     .environmentObject(firstBindable)
     .environmentObject(secondBindable)
Run Code Online (Sandbox Code Playgroud)

我想知道如果 firstBindable 和 secondBindable 是相同类型的结果是什么。如何.environmentObject()知道什么是程序员打算在firstBindable和之间设置的 exec 值secondBindable

所以我测试了这个

  1. 我做了一个 ObservableObject 类
final class TempStr: ObservableObject {
    @Published var tmpStr = "temp"

    init(initStr: String) {
        tmpStr = initStr
    }
}
Run Code Online (Sandbox Code Playgroud)
  1. 从sceneDelegate 调用environmentObject
window.rootViewController
  = UIHostingController(rootView:
      TestView()
        .environmentObject(TempStr(initStr: "1st")) 
        .environmentObject(TempStr(initStr: "2nd"))
Run Code Online (Sandbox Code Playgroud)
  1. 并使用视图中的值
struct TestView: View {
  @EnvironmentObject var tmp1: TempStr
  @EnvironmentObject var tmp2: TempStr

   var body: some …
Run Code Online (Sandbox Code Playgroud)

publish observable swiftui combine

9
推荐指数
1
解决办法
2006
查看次数

标签 统计

combine ×1

observable ×1

publish ×1

swiftui ×1