【发布时间】:2021-03-05 16:02:11
【问题描述】:
我已经在我的单元格中制定了这个协议
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 时,我的值被打乱了(不一样)。这是什么原因以及如何解决。
【问题讨论】:
-
细胞被重复使用。确保所有 UI 元素都设置为
cellForRow中定义的状态。而(sender as AnyObject)非常unswifty。将sender参数更改为真实类型UIButton。这是真正的代码吗?cellDelegate与CellDelegate和两次func plusButton(tag: Int)无法编译。
标签: swift uitableview tableview