2016-09-30 61 views
2

我有3个滑块作为显示上述:编程变化滑块值和更新标签

Sliders

而当“最小尖端”,它比“默认尖端”等于或大于,我加1“默认提示“。而且它也是默认到最大提示的逻辑。

所以,直到现在我有这个代码,部分工作,因为默认提示的滑块增长在用户界面中,但标签不更新,因为代理不被调用。

@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

defaultSlider.value = Float(valueMin+1)更新标签的文本,像这样:

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

谢谢!这解决了问题的一部分 –

0

滑块值的范围从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 
    } 
}