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

Swift - Xcode How to update stepper depending on a separate variable

我正在努力编写一些代码,希望有人能帮我弄清楚其中的逻辑,听起来很简单。

我有 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() 但它不起作用。我假设我在某处遗漏了一个功能,或者只是逻辑错误。

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

calc 应该在 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
    }


}

注意:其他stepper的action内容相同,也可以连接到这个IBAction上

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

@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

}