maximum/minimum 在递增按钮上

maximum/minimum on incrementing buttons

我是 Xcode/Swift 的新手,想知道如何设置导致触摸加号和减号按钮的金额的最大值和最小值。我现有的代码如下。 notifyBeforeAvailabilty 我想从 1-20 和 ratePerMinute 我想从 0.00 美元到 15.00 美元。

var notifyBeforeAvailability: Int!
var ratePerMin: Float!


notifyBeforeAvailability = 1
updateNotifyBeforeAvailability()
ratePerMin = 0.10
updateRatePerMin()


 @IBAction func notifyBeforeAvailabilityPlus(sender: AnyObject) {
    notifyBeforeAvailability = notifyBeforeAvailability + 1
    updateNotifyBeforeAvailability()
}
@IBAction func notifyBeforeAvailabilityMinus(sender: AnyObject) {
    notifyBeforeAvailability = notifyBeforeAvailability - 1
    updateNotifyBeforeAvailability()
}
func updateNotifyBeforeAvailability() {
    lblNotifyTime.text = String(notifyBeforeAvailability) + "min"
}


@IBAction func ratePerMinPlus(sender: AnyObject) {
    ratePerMin = ratePerMin + 0.10
    updateRatePerMin()
}    
@IBAction func ratePerMinMinus(sender: AnyObject) {
    ratePerMin = ratePerMin - 0.10
    updateRatePerMin()
}
func updateRatePerMin() {
    let currentValue = ratePerMin
    let current_string = String.localizedStringWithFormat("%.2f", currentValue)
    lblYourRate.text = "$" + current_string
}

您可以使用 minmax 来限制值。类似于:

notifyBeforeAvailability = min(max(1, notifyBeforeAvailability + 1), 20)
// In this example 1 & 20 are your bounds
// set the others accordingly...

此外,您可以使用 NSNumberFormatter

避免自己格式化数字

顺便说一句...如果您使用的是 UIStepper 控件,则有 minimumValuemaximumValue(连同 stepValue)属性可以处理你的限制...

Alladinian 的回答是正确的,但我更喜欢在 var 中使用 didSet 并从那里调用函数。

var notifyBeforeAvailability : Int = 1 {

    didSet {

        if oldValue < 1 {

            self.notifyBeforeAvailability = 1
        }
        if oldValue > 20 {

            self.notifyBeforeAvailability = 20
        }

        updateNotifyBeforeAvailability()

    }

}

var ratePerMin : Float = 0.10 {

    didSet{

        if newValue < 0.0{

            self.ratePerMin = 0.0
        }
        if newValue > 15.0 {

            self.ratePerMin = 15.0
        }
        print(newValue)
        updateRatePerMin()
    }

}
@IBAction func notifyBeforeAvailabilityPlus(sender: AnyObject) {
    notifyBeforeAvailability  += 1
}
@IBAction func notifyBeforeAvailabilityMinus(sender: AnyObject) {
    notifyBeforeAvailability -= 1
}
func updateNotifyBeforeAvailability() {
    lblNotifyTime.text = String(notifyBeforeAvailability) + "min"
}


@IBAction func ratePerMinPlus(sender: AnyObject) {
    ratePerMin += 0.10
}
@IBAction func ratePerMinMinus(sender: AnyObject) {
    ratePerMin -= 0.10
}
func updateRatePerMin() {
    let currentValue = ratePerMin
    let current_string = String.localizedStringWithFormat("%.2f", currentValue)
    lblYourRate.text = "$" + current_string
}