回答編集履歴
3
追加コードの改変
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
|
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
追記
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
タグの変更
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
|
|