SwiftUI re-initialize EnvironmentObject?



如何在SwiftUI中刷新环境变量?更新作为环境对象一部分的任何对象都很容易,但似乎应该有一种重新初始化的方法。

struct reinitenviron: View{
@EnvironmentObject private var globalObj: GlobalClass
var body: some View{
Text("refresh").onTapGesture {
globalObj = GlobalClass() //error here
}
}
}

下面给出globalObj是get only的错误。是否可以重新初始化?

一个可能的解决方案是在GlobalClass中引入显式方法将其重置为初始状态并使用该方法,在init和外部,如

class GlobalClass: ObservableObject {
@Published var value: Int = 1
init() {
self.reset()
}

func reset() {
self.value = 1
// do other activity if needed
}
}

struct reinitenviron: View{
@EnvironmentObject private var globalObj: GlobalClass
var body: some View{
Text("refresh").onTapGesture {
globalObj.reset()            // << here
}
}
}

相关内容

  • 没有找到相关文章

最新更新