根据分钟、小时、天等增加 UIStepper 值 SWIFT
Increment UIStepper Value based on minute, hour, day etc. SWIFT
我目前正在尝试增加一个 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)")
}
您不应绑定到 UIStepper 的值 属性。尝试使用某种抽象,其中步进器的值为 x,您需要的分钟数为 y。您只需要在 stepperValueChanged(stepper:) 中实现 y = f(x)。如果step是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
}
我目前正在尝试增加一个 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)")
}
您不应绑定到 UIStepper 的值 属性。尝试使用某种抽象,其中步进器的值为 x,您需要的分钟数为 y。您只需要在 stepperValueChanged(stepper:) 中实现 y = f(x)。如果step是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
}