I have a slider and label in my swift project. On the storyboard, I control dragged my slider onto my controller class for that page and created an outlet and also an action
Update the slider value in Main queue
@IBAction func sliderValueChanged(sender: UISlider) {
var currentValue = Int(sender.value)
println("Slider changing to \(currentValue) ?")
dispatch_async(dispatch_get_main_queue(){
sliderVal.text = "\(currentValue) Km"
})
}
I hope this is helpful to you.
This is what I did and it seemed to have worked:
// For the slider
@IBOutlet weak var slider: UISlider!
// For the label displaying the slider value
@IBOutlet weak var sliderVal: UILabel!
// For the "submit" button action
@IBAction func newSliderValue(_ sender: Any) {
sliderVal.text = String(slider.value)
}
Note, I used a button to submit my new slider value, not what you did.
Swift 3: Select .allEvents for its UIControlEvents.
slider.addTarget(self, action: #selector(ViewController.updateKmsLabel(sender:)), for: .allEvents)
// To use
func updateKmsLabel(sender: UISlider!) {
let value = Int(sender.value)
DispatchQueue.main.async {
self.kmsLabel.text = "\(value)"
print("Slider value = \(value)")
}
}
try this
var currentValue = Int(slider.value)
println("Slider changing to \(currentValue) ?")
startTime.text = "\(currentValue) Km"
class ViewController: UIViewController {
@IBOutlet weak var imgView: UIImageView!
@IBOutlet weak var slideroutlet: UISlider!
@IBOutlet weak var lblValue: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func slider(_ sender: Any) {
lblValue.text = String(slideroutlet.value)
imgView.alpha = CGFloat(slideroutlet.value)
}
If you want to do it programmatically, this is one way.
var slider: UISlider()
var label: UILabel()
func numberValueChanged(sender: UISlider) {
slider.setValue(Float(Int(slider.value)), animated: true)
updateLabels(slider.value)
}
fun updateLabels(nV: Float?) {
if let v = nV {
self.label.text = "\(v)"
}
}
slider.addTarget (self,
action: #selector(numberValueChanged)
forControlEvents: UIControlEvents.ValueChanged
)
Hope this was helpful :)