回答編集履歴
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 | 
            +
            そこは考えたり、調べたりするのも力になるので、試行錯誤してみてくださいね。
         | 
