ここに私の問題の .gif があります: http://g.recordit.co/LnslGAaWwK.gif
最初は、インクリメントまたはデクリメント ボタンを使用して値を増減できます。しかし、テーブルビューを一番下までスクロールしてから、以前に変更したステッパーに戻った後、デクリメントボタンが機能しないようで、カウンターラベルの値は同じままです
しかし、インクリメントボタンをタップすると機能しますが、それでも間違った値を与えると、1から再開し、スクロールする前に値を継続しません。
問題はここにあると思われます (完全なコードは以下にあります):
override func awakeFromNib() {
super.awakeFromNib()
setStepper()
}
テーブルビューの一番下までスクロールした後、 in が再びトリガーされるようで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)"
}
}
この問題を解決するにはどうすればよいですか?テーブルビューを一番下までスクロールした後、値を継続させる方法は?