我无法更新三个不同视图之间的数量, 我有带有 + 和 - 键和数量的主页,产品查看器页面也有 + 和 - 键和数量,如果我点击更多,您总是将带有 + - 符号的商品插入购物车和数量,如果我改变第一页上的数量它也会更新其他两个,而如果我从其他人更新它不会改变第一页上的数量,你能帮我解决这个问题吗?一千个感谢
产品
struct Product: Identifiable,Hashable {
var id = UUID().uuidString
var categoria: ProductType
var codice: String
var descrizione: String = ""
var prezzo: String
var immagine: String = ""
var quantita: Int = 0
}
共享数据
class SharedDataModel: ObservableObject {
@Published var cartProducts: [Product] = []
func addToCart(product: Product) {
cartProducts = cartProducts.filter {$0.id != product.id }
cartProducts.append(product)
家
struct Home: View {
@EnvironmentObject var sharedData: SharedDataModel
@StateObject var homeData: HomeViewModel = HomeViewModel()
var body: some View {
Button (action: {
sharedData.addToCart(product: product)
if product.quantita > 0 {
product.quantita -= 1
}
} , label: {
Image(systemName: "minus")
})
Text("\(product.quantita)")
Button(action: {
sharedData.addToCart(product: product)
product.quantita += 1
} , label: {
Image(systemName: "plus")
产品详细信息,如果我从家里更改,它会正确更新视图,但如果我从这里更改,它不会更新家里的数量
struct ProductDetailView: View {
@State var product: Product
@EnvironmentObject var sharedData: SharedDataModel
var body: some View {
Button {
sharedData.addToCart(product: product)
if product.quantita > 0 {
product.quantita -= 1
}
} label: {
Image(systemName: "minus")
}
Text("\(product.quantita)")
Button {
sharedData.addToCart(product: product)
product.quantita += 1
} label: {
Image(systemName: "plus")
购物车页面它更新了数量但不正确,一个错了,如果我从这里增加和减少数量,它不会在家里或产品详细信息中更新它
struct CartPage: View {
@EnvironmentObject var sharedData: SharedDataModel
var body: some View{
Button {
if product.quantita > 0 {
product.quantita -= 1
}
} label: {
Image(systemName: "minus")
}
Text("\(product.quantita)")
Button {
product.quantita += 1
} label: {
Image(systemName: "plus")
我是新手,无法在三个视图之间正确更新数量,我需要你的帮助,谢谢