我在每个单元格中都有一个UIStepper
来增加/减少它附近的标签。
class VariantsNewCell: UITableViewCell {
var delegate: QuantityProtocol?
@IBAction func addItemsValueChanged(_ sender: UIStepper) {
delegate?.addQuantity(cell: self)
}
@IBOutlet weak var addItems: UIStepper!
@IBOutlet weak var itemNameLabel: UILabel!
}
在UIViewController
:
func addQuantity(cell: VariantsNewCell) {
let newQuery = (drinksConfirmView[thisIndex![1]] as NSString).replacingCharacters(in: NSMakeRange(0,1), with: "\(Int(cell.addItems.value))")
drinksConfirmView[thisIndex![1]] = newQuery
self.tableVariantsQuantityView.reloadRows(at: [thisIndex!], with: .fade)
}
问题在于它无法正确更新每一行。它似乎第一次工作,但是在我再次点击之后,它在点击第二个单元格之前上升了数字。
我点击第0行并拥有1x - > 2倍 我在第0行再次点击,我得到相同的值。我设置了断点并重新加载了行。
如果我使用相同的行执行此操作,它部分正常工作,但您必须点击两次才能获得增量。
如果我决定点击第4行,我会获得之前的最后一个值的增量。因此,如果我在第0行以5x结尾,无论什么值,我都会在第4行得到5x。
同样的事情发生了,因为我在第4行中有5x,我点击第3行并得到6x。
当我尝试递减时,我必须点击两次,它在两者之间交替(我假设它存储stepper
的值)存储的值和预期的值。
当你尝试添加超过10倍时会变得更糟,它会开始给出110x,132x的值,这些奇怪的值似乎有一个模式,但它绝对不是我想要的。
我的猜测是使用prepareForReuse()