tableView

时间:2017-02-20 17:13:19

标签: ios uitableview swift3 uistepper

我在每个单元格中都有一个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()

0 个答案:

没有答案