UITableview 数据在我滚动时发生变化

时间:2021-03-05 16:02:11

标签: swift uitableview tableview

我已经在我的单元类中制定了这个协议

protocol CellDelegate: AnyObject{
func plusButton(tag: Int) 
func minusButton(tag: Int)   
}

class CartTableViewCell: UITableViewCell {    
@IBOutlet weak var plusButton: UIButton!
@IBOutlet weak var minusButton: UIButton!
@IBOutlet weak var itemsCountLabel: UILabel!

weak var delegate: CellDelegate?
var count = 0
var totalAmount = 0.0
var modelPrice:Double = 0.0
override func awakeFromNib() {
    super.awakeFromNib()
    itemsCountLabel.text = String(count)
    
}

@IBAction func addButton(_ sender: Any) {
    
    delegate?.plusButton(tag: (sender as AnyObject).tag)
    count += 1
    totalAmount = modelPrice * Double(count)
    itemsCountLabel.text = String(count)
    
}

@IBAction func minusButton(_ sender: Any) {
    delegate?.minusButton(tag: (sender as AnyObject).tag)
    if count > 0{
        count -= 1
        totalAmount = modelPrice * Double(count)
        it  emsCountLabel.text = String(count)
        print(totalAmount)
    }
}

}

这是我在视图控制器的 cellForRowat 方法中放置的代码

cell.delegate = self
cell.plusButton.tag = indexPath.row

并添加了这个扩展

extension ViewController: CellDelegate{
func plusbutton(tag: Int)
func minusButton(tag:Int)}

当我点击加号按钮时,我的 countLabel 会增加,反之亦然。问题是当我滚动 tableView 时,我的值被打乱了(不一样)。这是什么原因以及如何解决。

1 个答案:

答案 0 :(得分:0)

如果我理解您的代码,您可以修改单元格中的计数值。您是否在单元委托又名控制器的模型中修改它?因此,您需要通过更新单元格中的标签或重新加载单元格委托中的单元格来保持单元格的一致性。

相关问题