вот .gif моей проблемы: http://g.recordit.co/LnslGAaWwK.gif а>
сначала я могу использовать кнопку увеличения или уменьшения, чтобы увеличить или уменьшить значение. но после прокрутки представления таблицы вниз, а затем обратно к шагу, который я изменил ранее, кажется, что кнопка уменьшения не работает, значение из метки счетчика все еще остается прежним
но, если я нажму кнопку увеличения, он будет работать, но все равно будет давать неправильное значение, он снова начнется с 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)"
}
}
так как решить эту проблему? как сохранить значение после прокрутки таблицы вниз?
productData.quantity
во время увеличения и уменьшения, позвольте мне увидеть ваш контроллер табличного представления - person Hamed   schedule 03.11.2018