微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决更新 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,除非它是静态类对象,如单例)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。