コードを掲載される際は、「コードの挿入」を使ってみてください。
また、button()
の外で定義された変数(tapCount
とか)も一緒に掲載してください。
下記のコードだと、"プラスだよ"と"マイナスできた"が一回のタップで一緒に出てしまいます。
はい、質問者さんが書かれたプログラムだと、両方の表示が一回のタップで出てきて正解です。
では、なぜ「一回のタップで二回表示されるのか」ですが、
- ボタンを押された時に処理する関数の内部で
for-in
文をつかていること
- タップされた回数を保存する変数が
for-in
文でカウントするための変数にも使っているため、タップ回数がただしくカウントされていないから
です。
for-in
文はどのような目的で入れられたのでしょうか。
print()
を使って値を表示するのも一つですが、こんな感じで一つ一つコメントをつけてみるのもデバッグ手法としてはいいと思います。
swift
1@IBAction func button(_ sender: Any) {
2 // タップ回数を保存するための変数??
3 tapCount += 1
4
5 // for-in 文の変数に tapCount を使っている -> tapCount は 0-2 の範囲で値が変化
6 // つまり、三回実行される
7 for tapCount in 0..<3{
8
9 if tapCount == 1 {
10 // この if 文は2回目のループ(つまり、tapCount が1のとき)に実行
11 // ラベルの値を sum に保存
12 let sum = Int(resultLabel.text!)
13
14 // first に sum に50を加えた値を保存
15 first = sum! + 50
16
17 // ラベルの表示を first の値にする
18 resultLabel.text = String(first)
19
20 print("プラスだよ")
21 }else if tapCount == 2 {
22 // この if 文は3回目のループ(つまり、tapCount が2のとき)に実行
23 // ラベルの値を sumMinus に保存
24 let sumMinus = Int(resultLabel.text!)
25
26 // first に sumMinus から50を引いた値を保存
27 first = sumMinus! - 50
28
29 // ラベルの表示を first の値にする
30 resultLabel.text = String(first)
31 print("マイナスできた")
32 }
33 }
34}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/17 07:54