[英]SwiftUI ObservedObject not updating parent view
我有 2 個模型: Bag和Food 。 一個袋子包含 1 個食物。 食物有一個名字。
我正在嘗試將Food.name屬性與父視圖 ( BagView ) 中顯示的 TextField 和子視圖 ( FoodView ) 中顯示的另一個 TextField綁定。
這是我的示例代碼:
class Bag: ObservableObject {
@Published var food: Food
init(food: Food) {
self.food = food
}
}
class Food: ObservableObject {
@Published var name: String
init(name: String) {
self.name = name
}
}
struct BagView: View {
@ObservedObject var bag: Bag
var body: some View {
VStack {
TextField("Placeholder 1", text: $bag.food.name)
FoodView(food: bag.food)
}
}
}
struct FoodView: View {
@ObservedObject var food: Food
var body: some View {
TextField("Placeholder 2", text: $food.name)
}
}
要在兩個視圖之間傳遞數據,您需要對FoodView
使用Binding
。
struct BagView: View {
@ObservedObject var bag: Bag
var body: some View {
VStack {
TextField("Placeholder 1", text: $bag.food.name)
FoodView(food: $bag.food)
}
}
}
struct FoodView: View {
@Binding var food: Food
var body: some View {
TextField("Placeholder 2", text: $food.name)
}
}
回答您的評論,我建議添加一個額外的視圖/包裝器來預覽Binding
。
Ps 順便說一下,如果您打算使用Food
作為Bag
視圖模型的一部分,則不需要使用 Published 屬性將其設置為類。 結構就夠了。
struct Food {
var name: String
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.