以编程方式更改滑块值并更新Label

时间:2016-09-30 19:43:16

标签: ios swift uislider

我有3个滑块,如上所示:

Sliders

当" Min提示"它等于或大于"默认提示",我将1添加到"默认提示"。默认为最大提示的逻辑相同。

所以,到目前为止,我有这个代码,部分原因是因为默认提示的滑块在UI中增长,但标签没有更新,因为代理没有被调用。

@IBOutlet weak var minLabel: UILabel!
@IBOutlet weak var defaultLabel: UILabel!
@IBOutlet weak var maxLabel: UILabel!


@IBOutlet weak var minSlider: UISlider!
@IBOutlet weak var defaultSlider: UISlider!
@IBOutlet weak var maxSlider: UISlider!

override func viewDidLoad() {
    super.viewDidLoad()

    minSlider.addTarget(self, action: #selector(SettingsViewController.minSliderValueChanged(_:)), forControlEvents: UIControlEvents.AllEvents)

    defaultSlider.addTarget(self, action: #selector(SettingsViewController.defaultSliderValueChanged(_:)), forControlEvents: UIControlEvents.AllEvents)


}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

@IBAction func minSliderValueChanged(sender: UISlider) {
    let valueMin = Int(minSlider.value)
    let valueDefault = Int(defaultSlider.value)
    _ = Int(maxSlider.value)

    minLabel.text = "Min tip: \(valueMin)%"
    if(valueMin >= valueDefault){
        defaultSlider.value = Float(valueMin+1)
    }

}

@IBAction func defaultSliderValueChanged(sender: UISlider) {
    let value = Int(defaultSlider.value)
    defaultLabel.text = "Default tip: \(value)%"

}

@IBAction func maxSliderValueChanged(sender: UISlider) {
    let value = Int(maxSlider.value)
    maxLabel.text = "Max tip: \(value)%"
}

我失踪了什么?

2 个答案:

答案 0 :(得分:3)

defaultSlider.value = Float(valueMin+1)更新标签文本后,如下所示:

defaultLabel.text = "Default tip: \(valueMin+1)%"

答案 1 :(得分:1)

滑块值的范围从0(左端滑块)到1(右端滑块)。 通过let valueMin = Int(minSlider.value),变量valueMin可以是0或1.我认为这不是你想要的。

也许这更接近你正在寻找的东西?

@IBAction func minSliderValueChanged(sender: UISlider) {
    let valueMin = minSlider.value
    let valueDefault = defaultSlider.value
    _ = Int(maxSlider.value)

    minLabel.text = "Min tip: \(Int(valueMin*100))%"
    if(valueMin >= valueDefault){
        defaultSlider.value = valueMin
    }
}