teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

追加コードの改変

2020/09/09 04:16

投稿

TsukubaDepot
TsukubaDepot

スコア5086

answer CHANGED
@@ -52,14 +52,19 @@
52
52
 
53
53
  1秒に1回更新するのであれば、たとえば`down()`の中から色のついたセルを変更するようにする方法もありますし、タイマのインスタンスを2つ作る方法もあるかと思います。
54
54
 
55
+ (2020年9月9日:下記のソースコードは変更されています)
55
56
  ```Swift
57
+ var colorCount = 0
58
+
56
59
  @objc func down() {
57
- // 1 秒に1回 呼び出す
60
+ // 1 秒に1回呼び出す
61
+ colorCount += 1
58
- if Int((count - count.rounded()) * 100) == 0 {
62
+ if colorCount == 100 {
63
+ colorCount = 0
59
64
  changeColor()
60
65
  }
61
66
 
62
- if count>=0{
67
+ if count >= 0{
63
68
  count = count - 0.01
64
69
  timerLabel.text = String(format: "%.2f",count)
65
70
  }else{

2

追記

2020/09/09 04:16

投稿

TsukubaDepot
TsukubaDepot

スコア5086

answer CHANGED
@@ -31,5 +31,43 @@
31
31
  }
32
32
  // 略
33
33
  }
34
+ ```
35
+ ##追記
36
+ ミスが2箇所あります。
34
37
 
38
+ 色を変更するための関数内で次に色を変えたいセルの番号を作る際、`let`をつけて宣言してしまっているため、同名でスコープの違う変数となってしまっています。今回の場合`let`は必要ありません。
39
+
40
+ ```Swift
41
+ @objc func changeColor() {
42
+ // let をつけると、changeColor() 関数内部だけで有効な変数となってしまう。
43
+ //let redCellIndex: Int = Int.random(in: 0..<12)
44
+ redCellIndex = Int.random(in: 0..<12)
45
+ collectionView.reloadData()
46
+ }
47
+ ```
48
+
49
+ また、上記の関数を呼び出している部分がありません。
50
+
51
+ おそらく、以前はタイマ割り込みで呼び出していたのだと思いますが、残り秒数をカウントダウンする関数を呼び出すように変更した際、誤って消してしまったのだと思います。
52
+
53
+ 1秒に1回更新するのであれば、たとえば`down()`の中から色のついたセルを変更するようにする方法もありますし、タイマのインスタンスを2つ作る方法もあるかと思います。
54
+
55
+ ```Swift
56
+ @objc func down() {
57
+ // 1 秒に1回 呼び出す
58
+ if Int((count - count.rounded()) * 100) == 0 {
59
+ changeColor()
60
+ }
61
+
62
+ if count>=0{
63
+ count = count - 0.01
64
+ timerLabel.text = String(format: "%.2f",count)
65
+ }else{
66
+ if timer.isValid{
67
+ timer.invalidate()
68
+ timerLabel.text = "Finish"
69
+ // point = point+0
70
+ }
71
+ }
72
+ }
35
73
  ```

1

タグの変更

2020/09/07 05:24

投稿

TsukubaDepot
TsukubaDepot

スコア5086

answer CHANGED
@@ -1,7 +1,6 @@
1
1
  基本的には過去のご質問と同じです。
2
2
 
3
- - [Swift Xcode Cell
4
- ](https://teratail.com/questions/278363)
3
+ - [Swift Xcode Cell](https://teratail.com/questions/278363)
5
4
 
6
5
  過去のご質問のコードには、タイマ処理の呼び出し部分も書かれていたのでおそらくそれで問題ないとおもますが、例えば下記のような感じになります。
7
6