更新 tableview 范围之外的值时更新值

问题描述

当 tableview 内部的 label 值发生更改时,我在我的 viewcontroller 和 tableview 中放置了一个标签,我也想在 tableview 外部的标签显示该值 我已将该值存储在我的单元格类中的 var 中,它会更新但标签未更新,请帮忙。

tableview 单元格中的按钮操作

@IBAction func addButton(_ sender: Any) {
    count += 1
    totalAmount = ItemAmount * Double(count)
    totalCharge += ItemAmount
}
@IBAction func minusButton(_ sender: Any) {
    if count > 0{
        count -= 1
        totalAmount = ItemAmount * Double(count)
        totalCharge -= ItemAmount
    }
}

我已将 totalCharge 声明为 public 并在视图控制器中访问它并将值赋予 cellforRowat 中的标签

解决方法

您有两个不同的引用对象(您的视图控制器和单元类),因此您需要使用协议在两个对象之间进行通信。下面是一个例子:

//define the protocol
protocol updateLabelsDelegate {
 func updateLabels(itemAmount: Double)
}

//Add the delegate to your cell class
class customCell: UITableViewCell {

 var delegate: updateLabelsDelegate?

 @IBAction func addButton(_ sender: Any) {
    count += 1
    totalAmount = itemAmount * Double(count)
    totalCharge += itemAmount
    delegate.updateLabels(itemAmount: itemAmount)
 }
 @IBAction func minusButton(_ sender: Any) {
    if count > 0{
        count -= 1
        totalAmount = itemAmount * Double(count)
        totalCharge -= itemAmount
        delegate.updateLabels(itemAmount: itemAmount)
    }
 }
}

//Conform to the protocol in your view controller
extension ViewController: updateLabelsDelegate {
 func updateLabels(itemAmount: itemAmount) {
 //... take the itemAmount value passed here and use it to update your label on the view controller
 }
}

最后一件事,对 itemAmount 使用适当的大小写(不是 ItemAmount,除非它是静态类对象,如单例)。