2016-09-30 3 views
2

J'ai 3 curseurs comme indiqué ci-dessus:Programmatically valeur changement de curseur et mettre à jour l'étiquette

Sliders

Et quand la « pointe Min », il est égal ou supérieur à « pointe par défaut », ajouter 1 à " Astuce par défaut ". Et la même logique c'est pour l'astuce Default to Max. Donc, jusqu'à présent, j'ai ce code, qui fonctionne partiellement, parce que le curseur de la pointe par défaut grandit dans l'interface utilisateur, mais l'étiquette n'est pas mise à jour car les délégués ne sont pas appelés.

@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)%" 
} 

Qu'est-ce qui me manque?

Répondre

2

Après defaultSlider.value = Float(valueMin+1) mise à jour le texte de l'étiquette, comme suit:

defaultLabel.text = "Default tip: \(valueMin+1)%" 
+0

Merci! Cela a résolu une partie du problème –

0

valeurs Slider vont de 0 (curseur à la fin de gauche) à 1 (curseur à la fin de droite). En faisant let valueMin = Int(minSlider.value), la variable valueMin peut être 0 ou 1. Je suppose que ce n'est pas ce que vous voulez vraiment.

Peut-être est-ce plus proche de ce que vous cherchez?

@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 
    } 
}