【发布时间】:2020-08-27 13:17:38
【问题描述】:
我有两种看法:
struct Login: View {
@ObservedObject var Namespace = namespace()
Button(action: {
Namespace.changeNamespace(spacename: "Whatever")
}) {
Text("Change name")
}
...
}
和
struct Main: View {
@ObservedObject var Namespace = namespace()
Button(action: {
Namespace.changeNamespace(spacename: "Whatever")
}) {
Text("Change name")
}
Text("Namespace: \(Namespace.name)")
...
}
我也有对象本身:
class namespace: ObservableObject {
@Published private(set) var name = String()
...
func changeNamespace(spacename:String){
self.name = spacename
}
}
我观察到以下几点:
当我点击主视图上的按钮时,主视图上的文本会发生变化(预期行为)
但是,如果我点击登录视图上的按钮,主视图上的文本不会改变。
以一种有意义的方式,因为任一视图中的命名空间对象都是“命名空间”对象的单独实例,但我认为可观察对象的全部目的是此类对象的更改将反映在所有视图中正在观察这个物体。
简而言之:
我想更改视图 A 中的一个对象,以便重新绘制视图 B。
我哪里出错了?
【问题讨论】:
标签: swiftui observable