如何在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
}
}
}