[英]@Published String Variable Not Updating View
我在 Observableobejct 中的 @Published 字符串變量不會以某種方式更新 Text。
完全相同的代碼在不同的視圖中工作,但我無法弄清楚為什么這在這個視圖中不起作用。
當我搜索谷歌時,我發現只是檢查 observableobject 的初始化,將 didSet 設置為變量,但它們都不起作用,我只是恢復了。
下面是在 viewdidappear() 中字符串更改時不更新視圖的代碼。
struct StorageUpgradeView: View {
@ObservedObject private var storagevm = StorageVM()
@Environment(\.presentationMode) var presentationMode
var body: some View {
ZStack {
VStack {
ZStack(alignment: .center) {
HStack {
Button(action: {
presentationMode.wrappedValue.dismiss()
}, label: {
Image("Image_arrowleft")
.resizable()
.frame(width: 30, height: 30, alignment: .leading)
})
Spacer()
}
Text("Storage Upgrade".localized)
.font(.system(size: 24))
}
.padding()
Text(storagevm.month_price)
Text("\(storagevm.halfyear_price)")
Spacer()
}
}
.onAppear(perform: {
storagevm.viewdidappear()
})
.frame(maxWidth: .infinity, maxHeight: .infinity)
.foregroundColor(Color("Theme_OnSurface"))
.background(Color("Theme_Surface").ignoresSafeArea())
}
}
class StorageVM: ObservableObject {
@Published var month_price = "plpl"
@Published var halfyear_price: String
init() {
halfyear_price = "asdf"
}
func viewdidappear() {
month_price = "BlahBlah"
halfyear_price = "were"
}
}
但是當我通過更改選項卡切換視圖時,視圖打印效果很好。 這里有什么問題? 經過兩天的谷歌搜索和敲打我的頭后,我無法弄清楚。
每當您想觀察 @Published 屬性時,您都想在元素前使用 $ 符號。 所以嘗試使用Text(storagevm.$month_price)
使用 StateObject 而不是 ObservedObject 對我來說效果很好。 確保您的 iOS 目標需要為 14.0 或更高版本才能使此解決方案正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.