Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为什么我的步进机会';当我点击递增按钮时,是否没有给出正确的值?_Ios_Swift_Uistepper - Fatal编程技术网

Ios 为什么我的步进机会';当我点击递增按钮时,是否没有给出正确的值?

Ios 为什么我的步进机会';当我点击递增按钮时,是否没有给出正确的值?,ios,swift,uistepper,Ios,Swift,Uistepper,我使用千瓦步进机吊舱,因为它是可定制的。我可以使用自己的标签分离递增按钮、递减按钮和。但行为应该与Uisteper相同 这就是它的外观,它由1个递增按钮、1个递减按钮和计数器标签组成 以下是我的视图控制器上的代码: import UIKit import KWStepper class ViewController: UIViewController { @IBOutlet weak var counterLabel: UILabel! @IBOutlet weak var

我使用千瓦步进机吊舱,因为它是可定制的。我可以使用自己的标签分离递增按钮、递减按钮和。但行为应该与Uisteper相同

这就是它的外观,它由1个递增按钮、1个递减按钮和计数器标签组成

以下是我的视图控制器上的代码:

import UIKit
import KWStepper

class ViewController: UIViewController {

    @IBOutlet weak var counterLabel: UILabel!
    @IBOutlet weak var decrementButton: UIButton!
    @IBOutlet weak var incrementButton: UIButton!

    var stepper: KWStepper!

    override func viewDidLoad() {
        super.viewDidLoad()

        stepper = KWStepper(decrementButton: decrementButton, incrementButton: incrementButton)
        stepper.autoRepeat = false
        stepper.autoRepeatInterval = 1
        stepper.wraps = false
        stepper.minimumValue = 0
        stepper.maximumValue = 100
        stepper.incrementStepValue = 1
        stepper.decrementStepValue = 1
        stepper.value = 0.0

        counterLabel.text = "\(stepper.value)"


    }

    @IBAction func incrementButtonDidTapped(_ sender: Any) {

        counterLabel.text = "\(stepper.value)"

    }


    @IBAction func decrementButtonDidTapped(_ sender: Any) {

        counterLabel.text = "\(stepper.value)"

    }
}
我使用@IBAction touch up inside事件连接递增和递减按钮

所以我希望当我点击递增按钮时,它会从 0,0->1.0->2.0->3.0等等

但在我的例子中,当点击递增按钮时,它会给出 0,0->0,0->1,0->2,0

0,0将出现两次。为什么会出现两次?如何解决这个问题

我知道我可以从这样的值更改事件中看到步进器值

stepper
    .valueChanged { stepper in
        // ...
    }
但我需要将事件与递增和递减按钮分开


这是我的谷歌硬盘上的项目:

您可以用以下代码替换单击事件

@IBAction func incrementButtonDidTapped(_ sender: Any) {

    stepper.valueChanged { (steper) in
        self.counterLabel.text = "\(steper.value)"
    }

}


@IBAction func decrementButtonDidTapped(_ sender: Any) {

    stepper.valueChanged { (steper) in
        self.counterLabel.text = "\(steper.value)"
    }

}

步进器之前可能会调用
incrementButtondiTApped
DecrementButtondiTitTapped
方法。值
会发生变化,因为
KWStepper
还会侦听这两个按钮的
触碰内部
事件以更改其值

KWStepper
公开两个属性
decrementCallback
incrementCallback
,当值递减/递增时,可以使用它们获取通知。您可以使用这些按钮代替两个按钮上的
iAction

stepper.decrementCallback = { (stepper) in
    self.counterLabel.text = "\(stepper.value)"
}

stepper.incrementCallback = { (stepper) in
    self.counterLabel.text = "\(stepper.value)"
}
或者,您可以确认
KWStepperDelegate
并执行
kwstepperdedincrement
kwstepperdedincrement
委派方法以获得通知

import UIKit
import KWStepper

class ViewController: UIViewController, KWStepperDelegate {

    @IBOutlet weak var counterLabel: UILabel!
    @IBOutlet weak var decrementButton: UIButton!
    @IBOutlet weak var incrementButton: UIButton!

    var stepper: KWStepper!

    override func viewDidLoad() {
        super.viewDidLoad()

        stepper = KWStepper(decrementButton: decrementButton, incrementButton: incrementButton)
        stepper.autoRepeat = false
        stepper.autoRepeatInterval = 1
        stepper.wraps = false
        stepper.minimumValue = 0
        stepper.maximumValue = 100
        stepper.incrementStepValue = 1
        stepper.decrementStepValue = 1
        stepper.value = 0.0

        // Set the delegate
        stepper.delegate = self

        counterLabel.text = "\(stepper.value)"


    }

    @objc func KWStepperDidIncrement() {
        counterLabel.text = "\(stepper.value)"
    }


    @objc func KWStepperDidDecrement() {
        counterLabel.text = "\(stepper.value)"
    }
}

这是一个独立的问题吗?是的,它完全不同:)所以问题的解释是,标签在点击按钮后更改,但在值更改之前?第一种方法使用stepper.decrementCallback是正确的答案,但当我尝试使用KWStepper delegate时,它不起作用。谢谢:)@Alexa289它本应该有用的。您是否在
viewDidLoad()
中设置了
stepper.delegate=self