#ios #swift #uislider
#iOS #swift #uislider
Вопрос:
У меня есть 3 ползунка, как показано выше:
И когда «Минимальный наконечник» равен или больше «наконечника по умолчанию», я добавляю 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)%"
}
Чего мне не хватает?
Ответ №1:
После defaultSlider.value = Float(valueMin 1)
обновления текста метки, например, так:
defaultLabel.text = "Default tip: (valueMin 1)%"
Ответ №2:
Значения ползунка варьируются от 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
}
}