Je souhaite créer une minuterie déclenchée par un bouton pour démarrer la minuterie. Lorsque la minuterie est en cours d'exécution, je veux que le même bouton mette la minuterie en pause.La minuterie ne démarre pas avec le bouton de bascule de démarrage/pause
Je gère ce comportement principalement dans le IBAction de l'étiquette du bouton:
@IBAction func btn_start(_ sender: Any) {
if timerIsRunning == false {
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(runTimer), userInfo: nil, repeats: true)
timerIsRunning = true
}
if timerIsRunning == true {
timer.invalidate()
timerIsRunning = false
}
}
Je reconnais que je peux déclencher le bouton de démarrage plusieurs fois et la minuterie a été déclenchée aussi fois severalt, de sorte que la minuterie accélérait à la fin. Pour éviter ce comportement, j'introduit le timerIsRunning: Bool avec le résultat inattendu, que la minuterie ne démarre pas plus: -/
Ceci est ma fonction de minuterie qui est déclenchée par la minuterie:
func runTimer() {
if timeInSeconds >= 0 {
timeInSeconds = timeInSeconds - 1
updateTimerLabel()
}
}
Can quelqu'un explique cela? et donnez-moi un coup de main?
'timerIsRunning = true; si timerIsRunning == true' Uh-huh. – matt
@matt Que voulez-vous dire? Peux-tu expliquer? – boehmatron
il veut dire ce que j'ai essentiellement écrit dans ma réponse, vous définissez la variable sur 'true' et dans la déclaration suivante vous vérifiez sa valeur par rapport à true. – luk2302