質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

0回答

954閲覧

swift クイズアプリでボタンを押したら画像の切り替える方法

takuya21

総合スコア0

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2021/01/01 07:58

編集2022/01/12 10:55

前提・実現したいこと

写真付きの5択のクイズアプリを作成しています。
写真を表示して、その写真に対しての質問があり、答えを5択から選択するというイメージです。

発生している問題・エラーメッセージ画像の追加まではできましたが、画像の追加のコードを入力してからエラーがでました。

前回の投稿から違うやり方でしてみました。
UIImageViewを接続し、if文を使って画像の切り替えをしてるのがあったのでやってみました。
画像のコードを入力しましたが、エラーの意味もわからず何が間違っているのか分かりません。

エラーメッセージ
QuizViewControllerの値にはメンバーがありません。

該当のソースコード

swift

import UIKit

class QuizViewController: UIViewController {
@IBOutlet weak var quizNumberLabel: UILabel!
@IBOutlet weak var quizTextView: UILabel!
@IBOutlet weak var answerBtn1: UIButton!
@IBOutlet weak var answerBtn2: UIButton!
@IBOutlet weak var answerBtn3: UIButton!
@IBOutlet weak var answerBtn4: UIButton!
@IBOutlet weak var answerBtn5: UIButton!
@IBOutlet weak var judgeImageView: UIImageView!

〜〜〜変更部分〜〜〜

** @IBOutlet weak var appleImageView: UIImageView!

func changeImage(someValue: Int) { if someValue == 0 { self.imageView.image = UIImage(named:"first_image") } else if someValue == 1 { self.imageView.image = UIImage(named:"second_image") } else if someValue == 2 { self.imageView.image = UIImage(named:"third_image") } else if someValue == 3 { self.imageView.image = UIImage(named:"fourth_image") } else if someValue == 4 { self.imageView.image = UIImage(named:"some_image") } } **

〜〜〜ここまで〜〜〜

//csvファイルを読み込む・問題文と選択肢を表示する var csvArray: [String] = [] var quizArray: [String] = [] var quizCount = 0 //問題数を入れる変数 var quizTotal = 5 var correctCount = 0 var explanetionBGView = UIView() var explanationBGX = 0.0 //正解数を入れる変数 var correctLabel = UILabel() //戻るボタン var backBtn = UIButton() //画面が表示される時に呼ばれる場所 override func viewDidLoad() { super.viewDidLoad() let screenSize:CGSize = UIScreen.main.bounds.size explanationBGX = Double(screenSize.width/2) - 320/2 explanetionBGView.backgroundColor = UIColor.lightGray explanetionBGView.frame = CGRect(x: explanationBGX,y:Double(screenSize.height),width: 320, height: 210) explanetionBGView.isUserInteractionEnabled = true self.view.addSubview(explanetionBGView) correctLabel.frame = CGRect(x: 60, y: 100, width: 300, height: 30) correctLabel.font = UIFont.systemFont(ofSize: 20) explanetionBGView.addSubview(correctLabel) //戻るボタン実装 backBtn.frame = CGRect(x: 90, y: 200, width: 132, height: 37) backBtn.backgroundColor = UIColor.white backBtn.tintColor = UIColor.white backBtn.setTitle("戻る", for: .normal) backBtn.setTitleColor(UIColor.black, for: .normal) backBtn.addTarget(self, action: #selector(QuizViewController.backBtnTapped), for: UIControl.Event.touchUpInside) explanetionBGView.addSubview(backBtn) csvArray = loadCSV(fileName: "quiz") print(csvArray) //問題のデータの一番最初の行をとってくる処理 quizArray = csvArray[quizCount].components(separatedBy: ",") //問題数を表示 quizNumberLabel.text = "第(quizCount + 1)問" //問題文を表示する quizTextView.text = quizArray[0] //選択肢を表示する answerBtn1.setTitle(quizArray[2], for: .normal) answerBtn2.setTitle(quizArray[3], for: .normal) answerBtn3.setTitle(quizArray[4], for: .normal) answerBtn4.setTitle(quizArray[5], for: .normal) // Do any additional setup after loading the view. } override func prepare(for segue: UIStoryboardSegue, sender: Any?){ let sVC = segue.destination as! ScoreViewController sVC.correct = correctCount } //ボタンをタップした時の判定 @IBAction func btnAction(sender: UIButton) { if sender.tag == Int(quizArray[1]) { correctCount += 1 judgeImageView.image = UIImage(named: "correct") } else { judgeImageView.image = UIImage(named: "incorrect") } judgeImageView.isHidden = false explanation() } //戻るボタン @objc func backBtnTapped(){ let screenHeight = Double(UIScreen.main.bounds.size.height) UIView.animate(withDuration: 0.5, animations: {() -> Void in self.explanetionBGView.frame = CGRect(x: self.explanationBGX, y: screenHeight, width: 320, height: 210) }) answerBtn1.isEnabled = true answerBtn2.isEnabled = true answerBtn3.isEnabled = true answerBtn4.isEnabled = true answerBtn5.isEnabled = true judgeImageView.isHidden = true nextQuiz() } func explanation(){ let correctNumber = Int(quizArray[1])! correctLabel.text = "答え:(quizArray[correctNumber + 2])" let answerBtnY = answerBtn1.frame.origin.y UIView.animate(withDuration: 0.5, animations: {() -> Void in self.explanetionBGView.frame = CGRect(x: self.explanationBGX, y: Double(answerBtnY), width: 320, height: 280) }) answerBtn1.isEnabled = false answerBtn2.isEnabled = false answerBtn3.isEnabled = false answerBtn4.isEnabled = false answerBtn5.isEnabled = false } //次の問題を表示 func nextQuiz() { quizCount += 1 //画面遷移 quizArray.removeAll() if quizCount < quizTotal { quizArray = csvArray[quizCount].components(separatedBy: ",") quizNumberLabel.text = "第(quizCount + 1)門" quizTextView.text = quizArray[0] answerBtn1.setTitle(quizArray[2], for: .normal) answerBtn2.setTitle(quizArray[3], for: .normal) answerBtn3.setTitle(quizArray[4], for: .normal) answerBtn4.setTitle(quizArray[5], for: .normal) answerBtn5.setTitle(quizArray[6], for: .normal) } else { performSegue(withIdentifier: "scoreVC", sender: nil) } } func loadCSV(fileName: String) -> [String] { let csvBundle = Bundle.main.path(forResource: fileName, ofType: "csv")! do { let csvDate = try String(contentsOfFile: csvBundle,encoding: String.Encoding.utf8) let lineChange = csvDate.replacingOccurrences(of: "\r", with: "\n") csvArray = lineChange.components(separatedBy: "\n") } catch { print("エラー") } return csvArray } /* // MARK: - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation override func prepare(for segue: UIStoryboardSegue, sender: Any?) { // Get the new view controller using segue.destination. // Pass the selected object to the new view controller. } */

}

試したこと

ご教授頂いたことをしているのか、わかりませんがネットで似ているのを探していれこみました。すみませんが、教えて下さい。お願いします。

補足情報(FW/ツールのバージョンなど)

イメージ説明

バージョンなどは最新です。
初めてのアプリ作成なので、色々おしえていただくと助かります。
参考サイトを少しいじって、オリジナルアプリにしています。
ご教授お願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2021/01/01 08:34

画像のファイル名は quizArray[5] じゃなくて quizArray[7] では? あと、画像は UIImage(contentsOfFile:) じゃなくて、Assets.xcassets に登録して UIImage(named:) を使った方がいいと思います。
takuya21

2021/01/01 09:47

ご教授ありがとうございます。 訂正しておきます。 そのやり方を調べながらやってみようと思います。 そのやり方で、問題が切り替わったときに、画像も切り替えるように出来ますか?
hoshi-takanori

2021/01/04 14:56

Value of type 'QuizViewController' has no member 'imageView' というのは、 「QuizViewController には imageView なんて名前のプロパティは見当たりません。」って意味です。 judgeImageView: か appleImageView の間違いでは?
takuya21

2021/01/07 01:47

エラーが消えました! こんな簡単だったなんて、恥ずかしい限りです。 助かりました! ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問