带有按钮和增加量的SwiftUI更新模型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带有按钮和增加量的SwiftUI更新模型相关的知识,希望对你有一定的参考价值。

我想增加其点击计数的乘积。因此,如果用户按下按钮,则需要更新模型,数量+ = 1我尝试以下代码,但该模型不会更新金额。

struct GridCell: View 
@EnvironmentObject var order: Order

class ViewModel: ObservableObject 
    let objectWillChange = PassthroughSubject<Void, Never>()
    var product : Product 
        willSet 
            self.objectWillChange.send()
        
    

    init(product: Product) 
        self.product = product
    

    public func increaseCharacterStrength() 
        var viewproduct = self.product
        viewproduct.amount += 1
        self.objectWillChange.send()
    






func updatePos()
    self.viewModel.increaseCharacterStrength()
    let itempreis = self.viewModel.product.preis
    order.totalAmount += itempreis
    print(order.totalAmount)
    print("---- \(self.viewModel.product.amount) / \(self.viewModel.product.id)")



@ObservedObject var viewModel: ViewModel


  var body: some View 



  Button(action: 
        print("TAPPED")
        self.updatePos()
    ) 

        ZStack(alignment: .topLeading) 
            ...


  

在我的打印对帐单中,金额没有更新,每按一次该按钮的值就等于1。

我忘了什么?

答案

问题似乎是Product,是类还是结构?

如果是类,则必须继承ObservableObject

如果它是一个结构,那么它应该可以工作,您可以使用

@Published var product : Product

以上是关于带有按钮和增加量的SwiftUI更新模型的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI - 环境对象未更新 UI

SwiftUI + Combine:如何将数据分配给带有动画的模型

SwiftUI - 更新@State 不会改变视图

已发布/观察到的 var 在视图 swiftui 中未更新,带有调用函数

SwiftUI 按钮操作不会更新我的观察对象

SwiftUI 列表未使用 ForEach 正确更新