gpt4 book ai didi

swiftui - 为什么swiftui不能区分2个不同的环境对象?

转载 作者:行者123 更新时间:2023-12-05 05:03:14 26 4
gpt4 key购买 nike

我有这段代码,希望文本为 b。

结果:a a -> 见截图。我做错了什么?

import SwiftUI

class PublishString : ObservableObject {

init(string: String) {
self.string = string
print(self.string)
}

@Published var string : String = "a"
}

struct ContentView: View {

@EnvironmentObject var text1 : PublishString
@EnvironmentObject var text2 : PublishString

var body: some View {
VStack {
Text(text1.string)
Text(text2.string)
}
}
}

struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView().environmentObject(PublishString(string: "a"))
.environmentObject(PublishString(string: "b"))
}
}

enter image description here

并且...这有效:

class PublishString : ObservableObject {

init(string: String) {
self.string = string
print(self.string)
}

@Published var string : String = "a"
}

class PublishString2 : ObservableObject {

init(string: String) {
self.string = string
print(self.string)
}

@Published var string : String = "a"
}

struct ContentView: View {

@EnvironmentObject var text1 : PublishString
@EnvironmentObject var text2 : PublishString2

var body: some View {
VStack {
Text(text1.string)
Text(text2.string)
}
}
}

最佳答案

Asperi 所述在注释中,SwiftUI 按类型(您使用的类定义)标识环境对象。它查找该类型的对象并使用它找到的第一个对象。

一种选择是在您可以访问的一个对象上拥有多个属性(在您的情况下这意味着两个单独的 String 属性。

有关 Apple 的更多信息 documentation .

关于swiftui - 为什么swiftui不能区分2个不同的环境对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61804474/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com