以编程方式更改滑块值并更新标签
Programmatically change slider value and update the Label
我有 3 个滑块,如上所示:
当 "Min tip" 等于或大于 "Default tip" 时,我将 "Default tip" 加 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)%"
}
我错过了什么?
在defaultSlider.value = Float(valueMin+1)
更新标签的文本后,像这样:
defaultLabel.text = "Default tip: \(valueMin+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
}
}
我有 3 个滑块,如上所示:
当 "Min tip" 等于或大于 "Default tip" 时,我将 "Default tip" 加 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)%"
}
我错过了什么?
在defaultSlider.value = Float(valueMin+1)
更新标签的文本后,像这样:
defaultLabel.text = "Default tip: \(valueMin+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
}
}