回答編集履歴
2
微修正
test
CHANGED
@@ -46,7 +46,7 @@
|
|
46
46
|
|
47
47
|
```Swift
|
48
48
|
|
49
|
-
var currentNo: Int =
|
49
|
+
var currentNo: Int = 1
|
50
50
|
|
51
51
|
```
|
52
52
|
|
@@ -104,9 +104,9 @@
|
|
104
104
|
|
105
105
|
private func answerButtonPressed(_ sender: Any) {
|
106
106
|
|
107
|
-
if self.correctAnswerLabel.alpha = 0.0 { // 答えが表示されていない時
|
107
|
+
if self.correctAnswerLabel.alpha == 0.0 { // 答えが表示されていない時
|
108
108
|
|
109
|
-
self.correctAnswerLabel.alpha = 1.0
|
109
|
+
self.correctAnswerLabel.alpha = 1.0 // 答えの表示をさせる
|
110
110
|
|
111
111
|
} else { // 答えが表示されている時
|
112
112
|
|
@@ -118,7 +118,7 @@
|
|
118
118
|
|
119
119
|
currentNo = currentNo + 1 // 現在の問題番号を1個進める
|
120
120
|
|
121
|
-
showQuestion(no: currentNo) // 1個進めた番号の問題, 選択を表示する
|
121
|
+
showQuestion(no: currentNo) // 1個進めた番号の問題, 選択肢を表示する
|
122
122
|
|
123
123
|
}
|
124
124
|
|
1
情報追加
test
CHANGED
@@ -24,12 +24,126 @@
|
|
24
24
|
|
25
25
|
特定の問題のセットの取得には
|
26
26
|
|
27
|
+
```Swift
|
28
|
+
|
27
|
-
db.collection("Question").whereField("setName", isEqualTo: "地理").order(by: "no")
|
29
|
+
db.collection("Question").whereField("setName", isEqualTo: "地理").order(by: "no")
|
30
|
+
|
31
|
+
```
|
32
|
+
|
33
|
+
などで取得し、配列・独自クラスに保存。
|
28
34
|
|
29
35
|
|
30
36
|
|
31
37
|
ユーザーの答えの記録は実際の答えと、正誤は最低でも保存したいですよね。
|
32
38
|
|
33
|
-
正誤の
|
39
|
+
正誤のないようなもので、相対スコアなどを保存する場合はcorrectではなく、
|
34
40
|
|
35
41
|
scoreで点数を保存するようにすれば良いのではないでしょうか?
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
また、ボタンを押したら表示(問題・選択肢)を変えるプログラムの作り方は
|
46
|
+
|
47
|
+
```Swift
|
48
|
+
|
49
|
+
var currentNo: Int = 0
|
50
|
+
|
51
|
+
```
|
52
|
+
|
53
|
+
などで、現在の問題番号を持たせ、
|
54
|
+
|
55
|
+
ボタンを押したら、問題番号を配列の要素の番号として利用し、viewの更新をさせることですね。
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
```Swift
|
60
|
+
|
61
|
+
メンバ変数
|
62
|
+
|
63
|
+
var currentNo: Int = 1
|
64
|
+
|
65
|
+
let questions = [
|
66
|
+
|
67
|
+
["1", "野菜はどれですか?", "リンゴ", "いちご", "みかん", "いちご"], // No, 質問, 選択肢1, 選択肢2, 選択肢3, 答え
|
68
|
+
|
69
|
+
["2", "お米の品種名でないものはどれ?", "ほしのひかり", "ななつぼし", "はるみ", "ほしのひかり"],
|
70
|
+
|
71
|
+
["3", "ギネスにも認定されているもっとも栄養価が高い果物は?", "バナナ", "栗", "アボガド"]
|
72
|
+
|
73
|
+
]
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
func viewDidLoad() {
|
78
|
+
|
79
|
+
showQuestion(no: currentNo)
|
80
|
+
|
81
|
+
}
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
private func showQuestion(no: Int) {
|
86
|
+
|
87
|
+
self.progressLabel.text = String(no) + "/" + String(questions.count) // 進捗用表示、これで「1/3」などと表示される
|
88
|
+
|
89
|
+
self.QuestionNoLabel.text = questions[no-1][1] // questionsの配列のno番目(例えばno=1なら要素0(=1個目の配列)で、その[1]なので要素2(0,1と数えるから), つまり"野菜はどれですか?"
|
90
|
+
|
91
|
+
self.answerButton1.setTitle(questions[no-1][2] , for: .normal)
|
92
|
+
|
93
|
+
self.answerButton2.setTitle(questions[no-1][3] , for: .normal)
|
94
|
+
|
95
|
+
self.answerButton3.setTitle(questions[no-1][4] , for: .normal)
|
96
|
+
|
97
|
+
self.correctAnswerLabel.alpha = 0.0 // 毎回表示時に答えをalpha 0(透明に戻す)
|
98
|
+
|
99
|
+
self.correctAnswerLabel.text = questions[no-1][5]
|
100
|
+
|
101
|
+
}
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
private func answerButtonPressed(_ sender: Any) {
|
106
|
+
|
107
|
+
if self.correctAnswerLabel.alpha = 0.0 { // 答えが表示されていない時
|
108
|
+
|
109
|
+
self.correctAnswerLabel.alpha = 1.0
|
110
|
+
|
111
|
+
} else { // 答えが表示されている時
|
112
|
+
|
113
|
+
if currentNo != 3 { // 答えが表示されている時で、最後の問題に来て、ボタンを押されたら、segueする
|
114
|
+
|
115
|
+
self.performSegue( ... // 省略
|
116
|
+
|
117
|
+
} else { // 最後の問題じゃない時の動作
|
118
|
+
|
119
|
+
currentNo = currentNo + 1 // 現在の問題番号を1個進める
|
120
|
+
|
121
|
+
showQuestion(no: currentNo) // 1個進めた番号の問題, 選択を表示する
|
122
|
+
|
123
|
+
}
|
124
|
+
|
125
|
+
}
|
126
|
+
|
127
|
+
}
|
128
|
+
|
129
|
+
```
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
とりあえず、大まかなコードを示しました。
|
134
|
+
|
135
|
+
他にも
|
136
|
+
|
137
|
+
・答えを保存する、
|
138
|
+
|
139
|
+
・データの保存構造体orクラスを作る
|
140
|
+
|
141
|
+
・質問/選択肢/正解をfirestoreからDLし、データ構造体・クラスに保存する
|
142
|
+
|
143
|
+
・答えずに進む/戻るボタンの実装
|
144
|
+
|
145
|
+
・答えを選んだ時の動作正解時○や誤りの時×の表示
|
146
|
+
|
147
|
+
などなど、さらに考えて実装しないといけないことがあると思いますが、
|
148
|
+
|
149
|
+
そこは考えたり、調べたりするのも力になるので、試行錯誤してみてくださいね。
|