ajustement de l'étiquette à la valeur du curseur swift
j'ai un slider et un label dans mon projet swift. Sur le storyboard, je contrôle a traîné mon curseur sur ma classe de contrôleur pour cette page et a créé une sortie et aussi une action. J'ai traîné une autre étiquette comme exutoire. J'essaie de mettre à jour l'étiquette en fonction de la valeur du curseur. Je ne sais pas où je vais mal.
Code:
@IBOutlet weak var slider: UISlider!
@IBOutlet weak var sliderVal: UILabel!
@IBAction func sliderValueChanged(sender: UISlider) {
var currentValue = Int(sender.value)
println("Slider changing to (currentValue) ?")
sliderVal.text = "(currentValue) Km"
}
je peux voir dans le journal le sliderValueChanged d'une fonction est appelée, et le journal est l'impression de la valeur, mais l'étiquette de la le texte n'est pas mise à jour. Ce que je fais mal?
mise à Jour:
je viens de mettre un objet slider et une étiquette sur mon écran de connexion et j'ai utilisé la même méthodologie et le même code pour changer le texte de l'étiquette et ça a fonctionné mais ça ne marchera pas dans mon contrôleur de barre d'onglets. Est-ce à nous donner un indice sur ce que le problème peut être?
5 réponses
mettre à Jour la valeur d'un curseur dans la file d'attente Principale
@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"
})
}
j'espère que cela est utile pour vous.
essayez ceci
var currentValue = Int(slider.value)
println("Slider changing to \(currentValue) ?")
startTime.text = "\(currentValue) Km"
si vous voulez le faire programmatiquement, c'est une façon.
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
)
Espérons que cela a été utile :)
Swift 3: Sélectionner. allEvents pour ses 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)")
}
}
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)
}