回答編集履歴
2
微修正
answer
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
|
23
23
|
また、ボタンを押したら表示(問題・選択肢)を変えるプログラムの作り方は
|
24
24
|
```Swift
|
25
|
-
var currentNo: Int =
|
25
|
+
var currentNo: Int = 1
|
26
26
|
```
|
27
27
|
などで、現在の問題番号を持たせ、
|
28
28
|
ボタンを押したら、問題番号を配列の要素の番号として利用し、viewの更新をさせることですね。
|
@@ -51,14 +51,14 @@
|
|
51
51
|
}
|
52
52
|
|
53
53
|
private func answerButtonPressed(_ sender: Any) {
|
54
|
-
if self.correctAnswerLabel.alpha = 0.0 { // 答えが表示されていない時
|
54
|
+
if self.correctAnswerLabel.alpha == 0.0 { // 答えが表示されていない時
|
55
|
-
self.correctAnswerLabel.alpha = 1.0
|
55
|
+
self.correctAnswerLabel.alpha = 1.0 // 答えの表示をさせる
|
56
56
|
} else { // 答えが表示されている時
|
57
57
|
if currentNo != 3 { // 答えが表示されている時で、最後の問題に来て、ボタンを押されたら、segueする
|
58
58
|
self.performSegue( ... // 省略
|
59
59
|
} else { // 最後の問題じゃない時の動作
|
60
60
|
currentNo = currentNo + 1 // 現在の問題番号を1個進める
|
61
|
-
showQuestion(no: currentNo) // 1個進めた番号の問題, 選択を表示する
|
61
|
+
showQuestion(no: currentNo) // 1個進めた番号の問題, 選択肢を表示する
|
62
62
|
}
|
63
63
|
}
|
64
64
|
}
|
1
情報追加
answer
CHANGED
@@ -11,8 +11,65 @@
|
|
11
11
|

|
12
12
|
|
13
13
|
特定の問題のセットの取得には
|
14
|
+
```Swift
|
14
|
-
db.collection("Question").whereField("setName", isEqualTo: "地理").order(by: "no")
|
15
|
+
db.collection("Question").whereField("setName", isEqualTo: "地理").order(by: "no")
|
16
|
+
```
|
17
|
+
などで取得し、配列・独自クラスに保存。
|
15
18
|
|
16
19
|
ユーザーの答えの記録は実際の答えと、正誤は最低でも保存したいですよね。
|
17
|
-
正誤の
|
20
|
+
正誤のないようなもので、相対スコアなどを保存する場合はcorrectではなく、
|
18
|
-
scoreで点数を保存するようにすれば良いのではないでしょうか?
|
21
|
+
scoreで点数を保存するようにすれば良いのではないでしょうか?
|
22
|
+
|
23
|
+
また、ボタンを押したら表示(問題・選択肢)を変えるプログラムの作り方は
|
24
|
+
```Swift
|
25
|
+
var currentNo: Int = 0
|
26
|
+
```
|
27
|
+
などで、現在の問題番号を持たせ、
|
28
|
+
ボタンを押したら、問題番号を配列の要素の番号として利用し、viewの更新をさせることですね。
|
29
|
+
|
30
|
+
```Swift
|
31
|
+
メンバ変数
|
32
|
+
var currentNo: Int = 1
|
33
|
+
let questions = [
|
34
|
+
["1", "野菜はどれですか?", "リンゴ", "いちご", "みかん", "いちご"], // No, 質問, 選択肢1, 選択肢2, 選択肢3, 答え
|
35
|
+
["2", "お米の品種名でないものはどれ?", "ほしのひかり", "ななつぼし", "はるみ", "ほしのひかり"],
|
36
|
+
["3", "ギネスにも認定されているもっとも栄養価が高い果物は?", "バナナ", "栗", "アボガド"]
|
37
|
+
]
|
38
|
+
|
39
|
+
func viewDidLoad() {
|
40
|
+
showQuestion(no: currentNo)
|
41
|
+
}
|
42
|
+
|
43
|
+
private func showQuestion(no: Int) {
|
44
|
+
self.progressLabel.text = String(no) + "/" + String(questions.count) // 進捗用表示、これで「1/3」などと表示される
|
45
|
+
self.QuestionNoLabel.text = questions[no-1][1] // questionsの配列のno番目(例えばno=1なら要素0(=1個目の配列)で、その[1]なので要素2(0,1と数えるから), つまり"野菜はどれですか?"
|
46
|
+
self.answerButton1.setTitle(questions[no-1][2] , for: .normal)
|
47
|
+
self.answerButton2.setTitle(questions[no-1][3] , for: .normal)
|
48
|
+
self.answerButton3.setTitle(questions[no-1][4] , for: .normal)
|
49
|
+
self.correctAnswerLabel.alpha = 0.0 // 毎回表示時に答えをalpha 0(透明に戻す)
|
50
|
+
self.correctAnswerLabel.text = questions[no-1][5]
|
51
|
+
}
|
52
|
+
|
53
|
+
private func answerButtonPressed(_ sender: Any) {
|
54
|
+
if self.correctAnswerLabel.alpha = 0.0 { // 答えが表示されていない時
|
55
|
+
self.correctAnswerLabel.alpha = 1.0
|
56
|
+
} else { // 答えが表示されている時
|
57
|
+
if currentNo != 3 { // 答えが表示されている時で、最後の問題に来て、ボタンを押されたら、segueする
|
58
|
+
self.performSegue( ... // 省略
|
59
|
+
} else { // 最後の問題じゃない時の動作
|
60
|
+
currentNo = currentNo + 1 // 現在の問題番号を1個進める
|
61
|
+
showQuestion(no: currentNo) // 1個進めた番号の問題, 選択を表示する
|
62
|
+
}
|
63
|
+
}
|
64
|
+
}
|
65
|
+
```
|
66
|
+
|
67
|
+
とりあえず、大まかなコードを示しました。
|
68
|
+
他にも
|
69
|
+
・答えを保存する、
|
70
|
+
・データの保存構造体orクラスを作る
|
71
|
+
・質問/選択肢/正解をfirestoreからDLし、データ構造体・クラスに保存する
|
72
|
+
・答えずに進む/戻るボタンの実装
|
73
|
+
・答えを選んだ時の動作正解時○や誤りの時×の表示
|
74
|
+
などなど、さらに考えて実装しないといけないことがあると思いますが、
|
75
|
+
そこは考えたり、調べたりするのも力になるので、試行錯誤してみてくださいね。
|