问题描述
当 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,除非它是静态类对象,如单例)。