数量 + - 在三个不同的视图中,每个视图中的数量都会改变

问题描述 投票:0回答:0

我无法更新三个不同视图之间的数量, 我有带有 + 和 - 键和数量的主页,产品查看器页面也有 + 和 - 键和数量,如果我点击更多,您总是将带有 + - 符号的商品插入购物车和数量,如果我改变第一页上的数量它也会更新其他两个,而如果我从其他人更新它不会改变第一页上的数量,你能帮我解决这个问题吗?一千个感谢

产品

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")

我是新手,无法在三个视图之间正确更新数量,我需要你的帮助,谢谢

swift cart product-quantity
© www.soinside.com 2019 - 2024. All rights reserved.