質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

2005閲覧

【Swift】Timer ストップウォッチのな一時停止→再開のような仕様にしたい。

ahoahomarumaru

総合スコア26

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/05/31 04:56

swift

1 2 @IBOutlet weak var countdwonTimer: UILabel! 3 4 5 var count = 0 6 var timer : Timer? 7 8 9 @IBAction func startButton(_ sender: Any) { 10 if let nowTimer = timer { 11 if nowTimer.isValid == true { 12 return 13 } 14 } 15 timer = Timer.scheduledTimer(timeInterval: 1.0, 16 selector : # selector(self.timerInterrupt(_:)) 17 userInfo : nil, 18 repeats : true) 19 } 20 21 @IBAction func stopButton(_ sender: Any) { 22 if let nowTimer = timer { 23 if nowTimer.isValid == true { 24 nowTimer.invalidate() 25 } 26 } 27 } 28 func displayUpdate() -> Int { 29 let remainCount = 10 - count 30 countdwonTimer.text = "残り(remainCOunt)" 31 return remainCount 32 } 33 34 @obj func timerInterrupt(_ timer: Timer) { 35 count += 1 36 if displayUpdate() <= 0 { 37 count = 0 38 timer.invalidate() 39 } 40 }

 スタートボタンで10秒カウントダウン開始 残り3秒でストップボタンを押でカウントダウンを止め、スタートボタンを押したらまた3秒からカウントダウンが開始されるようにしたい。

fire()を使うのかと思ったのですがfire()の存在意義や使い方がわかりませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

一度Timerをinvalidate()したあとは、再開できませんので、

また3秒からカウントダウンが開始されるようにしたい。

のであれば、
もう一度

timer = Timer.scheduledTimer(timeInterval: 1.0,

selector : # selector(self.timerInterrupt(_:)) userInfo : nil, repeats : true)

を実行してください。

投稿2019/05/31 05:02

takabosoft

総合スコア8356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ahoahomarumaru

2019/05/31 05:37

ありがとうございました。めちゃめちゃ助かりました! 厚かましく質問させていただきます、fire()はいつ使うのですか?
takabosoft

2019/05/31 07:34

fireはたしかタイマーが生きているときに、発火させるためだったと思います。再開用の関数ではありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問