Swift - Xcode如何根据单独的变量更新步进器

时间:2018-06-03 09:15:57

标签: swift xcode uistepper

我在努力学习某些代码并希望有人可以帮助我找出逻辑,听起来很简单。

我有2个步进器,stepper1和stepper2。它们的最大值都是10.我有一个变量,它是它们当前值的总和。

我希望一旦它们共同达到10,就禁止步进器增加值。

我正在学习编码,如果我的术语不正确,请原谅我。

这是我在使用其中一个步进器进行测试时所使用的代码。

var sumMaxValues = stepper1.value + stepper2.value
var purchaseMax = 10

@IBAction func stepper1Changed(_ sender: UIStepper) {

        if sumMaxValues >= purchaseMax {

            stepper.maximumValue = stepper.value

        }

}

这种方法可以阻止步进器的使用,只会在点击时激活代码。我希望能够降低步进器值,以便再次使用步进器。

因此,如果stepper1和stepper2都是5(总共10),那么两者都不会增加,但它们可能会减少,因此会再次更改它们的值。

我还尝试将此添加到viewDidLoad()但它无法正常工作。我假设我在某个地方错过了某个功能,或者说逻辑都错了。

提前感谢您提出的任何建议。

2 个答案:

答案 0 :(得分:0)

计算应该在func

@IBAction func stepper1Changed(_ sender: UIStepper) {

   var sumMaxValues = stepper1.value + stepper2.value

   // 

    if sumMaxValues >= purchaseMax {

        stepper1.maximumValue = stepper1.value

        stepper2.maximumValue = stepper2.value

    }
    else
    {

        stepper1.maximumValue = purchaseMax

        stepper2.maximumValue = purchaseMax
    }


}

注意:其他步进器的操作具有相同的内容,您也可以将其连接到此IBAction

答案 1 :(得分:-1)

您需要为所有步进器创建相同的操作方法,然后像这样进行计算:

@IBAction func stepperAction(_ sender: UIStepper) {

   let calculatedValue = stepper1.value + stepper2.value

   stepper1.maximumValue = calculatedValue >= purchaseMax ? stepper1.value: purchaseMax
   stepper2.maximumValue = calculatedValue >= purchaseMax ? stepper2.value: purchaseMax
}

如果你有三个步进器:

@IBAction func stepperAction(_ sender: UIStepper) {

   let calculatedValue = stepper1.value + stepper2.value + stepper3.value

   stepper1.maximumValue = calculatedValue >= purchaseMax ? stepper1.value: purchaseMax
   stepper2.maximumValue = calculatedValue >= purchaseMax ? stepper2.value: purchaseMax
   stepper3.maximumValue = calculatedValue >= purchaseMax ? stepper3.value: purchaseMax

}