質問編集履歴

4

question内のコードを追記しました。

2019/01/18 09:57

投稿

testyoutatsu
testyoutatsu

スコア29

test CHANGED
File without changes
test CHANGED
@@ -32,12 +32,20 @@
32
32
 
33
33
  func question() {
34
34
 
35
-
36
-
37
35
  //Labelに問題を表示する記述
38
36
 
39
37
  let random = Int(arc4random_uniform(UInt32(hairetsu.count)))
40
38
 
39
+ //追記 ここから//
40
+
41
+ hairetsuLabel.text = hairetsu[random]
42
+
43
+ let random2 = Int(arc4random_uniform(UInt32(hairetsu2.count)))
44
+
45
+ hairetsuLabel2.text = hairetsu2[random2]
46
+
47
+ //ここまで (変数の名前は実際のコードと変えてます)
48
+
41
49
 
42
50
 
43
51
  timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(ViewController.counter), userInfo: nil, repeats: true)

3

fuzzballさんへの返信

2019/01/18 09:57

投稿

testyoutatsu
testyoutatsu

スコア29

test CHANGED
File without changes
test CHANGED
@@ -153,3 +153,55 @@
153
153
 
154
154
 
155
155
  わざわざDispatchWorkItemを用いる理由は「次へ」のボタンを配置していて、ボタンを押されたら```question()```を実行します。するとタイマーのインターバルが1秒よりも加速してしまうため、これを解決するために```workItem.cancel```を使いたいと思いました。
156
+
157
+
158
+
159
+
160
+
161
+ .
162
+
163
+
164
+
165
+ .
166
+
167
+
168
+
169
+
170
+
171
+ fuzzballさんへの返信:
172
+
173
+ コードが見づらいと思ったので質問の方にも書きます。
174
+
175
+
176
+
177
+ 回答ありがとうございます。今回は上のコードを使いたいと思います。
178
+
179
+ ViewControllerクラス直下に
180
+
181
+ ```
182
+
183
+ let workItem = DispatchWorkItem(block: {
184
+
185
+ self.timeOverAlert(a: random)
186
+
187
+ })
188
+
189
+ ```
190
+
191
+ を書くと
192
+
193
+ エラー```Value of type '(ViewController) -> () -> (ViewController)' has no member 'timeOverAlert'```が出て self. を取るとエラー```Instance member 'timeOverAlert' cannot be used on type 'ViewController'; did you mean to use a value of this type instead?```が出てしまいます。
194
+
195
+ こちらはどのようにして解決できますでしょうか?
196
+
197
+
198
+
199
+ ```timeOverAlert(a: Int)```内に書けばエラーは出ないのですが、workItem.cancelを使いたいのが```nextButtonAlert()```内なのでクラス直下に書くまたは他の方法がありましたら教えていただきたいです。
200
+
201
+ 回答を頂いてから色々試してみましたがうまくいきませんでした。
202
+
203
+ 何個も聞いてしまいすみません。
204
+
205
+
206
+
207
+ 追記に書いた「「次へ」のボタンを配置していて、ボタンを押されたら```question()```を実行します。」この部分が``nextButtonAlert()``です。

2

追記

2019/01/18 09:01

投稿

testyoutatsu
testyoutatsu

スコア29

test CHANGED
File without changes
test CHANGED
@@ -149,3 +149,7 @@
149
149
  ```
150
150
 
151
151
  この中に```timeOverAlert()```を記述すればいいと思うのですが、```question()```で生成したランダムな数字(random)をうまく渡すことができませんでした。
152
+
153
+
154
+
155
+ わざわざDispatchWorkItemを用いる理由は「次へ」のボタンを配置していて、ボタンを押されたら```question()```を実行します。するとタイマーのインターバルが1秒よりも加速してしまうため、これを解決するために```workItem.cancel```を使いたいと思いました。

1

コード追記

2019/01/18 06:48

投稿

testyoutatsu
testyoutatsu

スコア29

test CHANGED
File without changes
test CHANGED
@@ -21,6 +21,10 @@
21
21
  var timer = Timer()
22
22
 
23
23
  var seconds = 50
24
+
25
+ let workItem = DispatchWorkItem(block: {
26
+
27
+ })
24
28
 
25
29
 
26
30