根据分钟,小时,日等增加UIStepper值SWIFT

时间:2017-07-29 20:52:49

标签: ios swift uistepper

我目前正在尝试增加uistepper并根据其当前值更改其值。 uistepper应该充当时间管理员。它增加5分钟,直到达到60分钟,然后增加60分钟。一旦达到120分钟,我希望步进器增加1440分钟,即1天。然而,我的代码遇到了问题,我遇到的另一个问题是逐步减少步进器,这样你就可以从一天回到一小时,然后回到几分钟。

这是我现在的代码:

func stepperValueChanged(stepper: UIStepper) {
    var value = Int(stepper.value)
    stepper.minimumValue = 0
    if (stepper.value != 0 && stepper.value <= 60) {
        stepper.stepValue = 5
        stepper.value -= 5
        stepper.value += 5
        value = Int(stepper.value)
        reminderSubLabel.text = "\(value) minutes before"
        if stepper.value == 60 {
        reminderSubLabel.text = "\(value / 60) hour before"
        }
    } else if stepper.value >= 60 && stepper.value <= 180 {
        if stepper.value == 60 {
            reminderSubLabel.text = "\(value / 60) hour before"
            stepper.value -= 5
            stepper.value += 60
        } else {
        //stepper.value = 120
        value = Int(stepper.value / 60)
        stepper.stepValue = 60
        stepper.value -= 60
        stepper.value += 60
        reminderSubLabel.text = "\(value) hours before"
        }
        if stepper.value == 120 {
            stepper.value = 1440
            stepper.value -= 1320
            stepper.value += 1440
            //stepper.stepValue = 1320
        }
    }
    if stepper.value == 0 {
        stepper.stepValue = 5
        stepper.value = 0
        reminderSubLabel.text = "At the time of the event"

    }
    stepper.minimumValue = 0
    stepper.maximumValue = 20160
    print("\(stepper.value)")
}

1 个答案:

答案 0 :(得分:1)

您不应绑定到UIStepper的value属性。尝试使用一种抽象,其中stepper的值是x,你需要的值在几分钟内是y。您所需要的只是在stepperValueChanged(步进器:)中实现y = f(x)。如果步骤为1,这很简单。

var minutes = 0

@IBAction func stepperValueChanged(_ stepper: UIStepper) {
    let value = Int(stepper.value)
    var minutes = 0
    for step in 0..<value {
        if step <= 11 {
            minutes += 5
        } else if step <= 12 {
            minutes += 60
        } else {
            minutes += 1440
        }
    }
    self.minutes = minutes
}