我发现了这个问题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。
所以我测试了这个
final class TempStr: ObservableObject {
@Published var tmpStr = "temp"
init(initStr: String) {
tmpStr = initStr
}
}
Run Code Online (Sandbox Code Playgroud)
window.rootViewController
= UIHostingController(rootView:
TestView()
.environmentObject(TempStr(initStr: "1st"))
.environmentObject(TempStr(initStr: "2nd"))
Run Code Online (Sandbox Code Playgroud)
struct TestView: View {
@EnvironmentObject var tmp1: TempStr
@EnvironmentObject var tmp2: TempStr
var body: some …Run Code Online (Sandbox Code Playgroud)