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?

10
demandé sur user2363025 2015-06-04 12:11:08

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.

8
répondu MMT 2016-01-19 15:25:00

essayez ceci

    var currentValue = Int(slider.value)
    println("Slider changing to \(currentValue) ?")
    startTime.text = "\(currentValue) Km"
1
répondu Memon Irshad 2015-06-04 09:57:16

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 :)

0
répondu Milap Jhumkhawala 2016-07-28 20:53:22

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)")
    }
}
0
répondu Gary Mansted 2017-07-10 06:46:13

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)
}
0
répondu hiren 2018-05-04 06:39:19