вот. GIF моей проблемы: http://g.recordit.co/LnslGAaWwK.gif
сначала я могу использовать кнопку увеличения или уменьшения, чтобы увеличить или уменьшить значение. но после прокрутки табличного представления вниз и затем назад к степперу, который я изменил ранее, кажется, что кнопка декремента *1005* не работает, значение с метки счетчика остается прежним
но, если я нажму кнопку увеличения , она сработает, но все равно с неправильным значением, она начнется снова с 1, она не продолжит значение перед прокруткой.
Я подозреваю, что проблема здесь (полный код ниже):
override func awakeFromNib() {
super.awakeFromNib()
setStepper()
}
кажется, что после прокрутки к нижней части табличного представления, setStepper()
в awakeFromNib()
будет снова запущено, и это означает, что начальное значение из степпера (stepper.value = 0)
, вернется обратно к нулю, возможно, поэтому Если я нажму кнопку увеличения, то получится 1, не продолжая значение перед прокруткой
вот код из моей ячейки табличного представления
import UIKit
import KWStepper
protocol CounterDelegate{
func incrementOrDecrementButtonDidTapped(at selectedIndexPath:IndexPath, counterValue: Int)
}
class CheckOutCell: UITableViewCell {
var stepper: KWStepper?
var indexPath: IndexPath?
var delegate: CounterDelegate?
@IBOutlet weak var counterLabel: UILabel!
@IBOutlet weak var decrementButton: UIButton!
@IBOutlet weak var incrementButton: UIButton!
var productData : Product? {
didSet {
updateUI()
}
}
override func awakeFromNib() {
super.awakeFromNib()
setStepper()
}
func setStepper() {
stepper = KWStepper(decrementButton: decrementButton, incrementButton: incrementButton)
guard let stepper = stepper else {return}
stepper.autoRepeat = false
stepper.wraps = false
stepper.minimumValue = 0
stepper.value = 0
stepper.incrementStepValue = 1
stepper.decrementStepValue = 1
stepper.valueChangedCallback = { stepper in
let stepperValue = Int(stepper.value)
// send data to CheckoutVC
guard let indexPath = self.indexPath else {return}
self.delegate?.incrementOrDecrementButtonDidTapped(at: indexPath, counterValue: stepperValue)
print(stepperValue)
}
}
func updateUI() {
guard let productData = productData else {return}
counterLabel.text = "\(productData.quantity)"
}
}
так как решить эту проблему? как заставить значение продолжать после прокрутки табличного представления к основанию?