実現したいこと
SwiftのTimer.scheduledTimerを使用して
タイマーのカウントダウンが、0になった瞬間、処理を発火させたい。
不明点
現状、表示が0になってから1秒経過しないと、次の処理が発火しない。
これを、1から0になった瞬間発火させたい
現状の処理の流れ
Timer.scheduledTimer
でカウントダウン開始timeInterval: 1
で1秒毎にupdateCounter
関数を実行する- 0になるまで、
secondsRemaing
をカウントダウンする - 0になって、1秒後に
btnHidden()
が発火する
⇒これを0になった瞬間発火させたい
swift
1class QuizViewController: UIViewController { 2 var secondsRemaing = 3 3 var timer = Timer() 4 5 // カウントダウン 6 timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(updateCounter), userInfo: nil, repeats: true) 7 secondsLabel.text = String(secondsRemaing) 8 } 9 10 // カウントダウンの関数 11 @IBAction func updateCounter() { 12 if secondsRemaing > 0 { 13 secondsRemaing -= 1 14 secondsLabel.text = String(secondsRemaing) 15 } else if secondsRemaing == 0 { 16 timer.invalidate() 17 secondsLabel.text = String(secondsRemaing) 18 // 0になったら発火する処理 19 btnHidden() 20 } 21 } 22
# 環境
- Xcode Version 12.5.1
- Swift version 5.4.2
swiftを触り始めてからまだ日が浅く、
皆様のお力を貸していただければと思います。
どうぞよろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/20 11:41