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

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

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

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

Q&A

解決済

1回答

621閲覧

ユーザーが選んだ回答を読み込んで線グラフに表示させたい

seiya_0930

総合スコア17

Swift

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

0グッド

0クリップ

投稿2019/08/28 07:57

編集2019/08/28 08:11
コード

ヘルスケアアプリを作成しています。

20問ほどの質問に答えたら健康率を表示するシンプルなものなのですが、肝としてグラフに表示することで日々の健康率を記録できたらいいなと思っています。

皆さんの助けのおかげで大きな枠組みは完成したのですが、最後のユーザデータを記録し、それをグラフに表示させるようにしたいです。

どのように入力すれば表示できるでしょうか?

現在のコードはこのような感じです。

swift

1import UIKit 2 3 4 // クイズ1つの問題がどんな値を扱うかうか 5 //情報が更新されることはないので、構造体にする 6 struct Quiz { 7 8 let text: String 9 let optionOne: String 10 let optionTwo: String 11 12 let optionThree: String 13 14 // Initializer(イニシャライザ) = 初期化処理 15 init(text: String, optionOne: String, optionTwo: String, optionThree: String) { 16 self.text = text 17 self.optionOne = optionOne 18 self.optionTwo = optionTwo 19 self.optionThree = optionThree 20 21 } 22 }

swift

1import UIKit 2 3class nextViewController: UIViewController { 4 5 // MARK: - IBOutlet 6 7 @IBOutlet var quizNumberLabel: UILabel! 8 @IBOutlet var quizTextView: UITextView! 9 @IBOutlet var optionOneButton: UIButton! 10 @IBOutlet var optionTwoButton: UIButton! 11 @IBOutlet var optionThreeButton: UIButton! 12 13 // MARK: - Properties 14 15 var point: Int = 0 16 var quizNumber: Int = 0 17 var quizArray: [Quiz] = [] 18 19 // MARK: - Lifecycle 20 21 override func viewDidLoad() { 22 super.viewDidLoad() 23 24 setUpQuiz() 25 showQuiz() 26 } 27 28 // MARK: - UI 29 30 func setUpQuiz() { 31 32 let quiz1 = Quiz(text: "毎日3食食べましたか?", optionOne:"はい", optionTwo:"時々食べた", optionThree: "食べていない") 33 let quiz2 = Quiz(text: "決まった時間にご飯を食べていますか?", optionOne: "食べている", optionTwo: "時々食べる", optionThree: "食べていない") 34 let quiz3 = Quiz(text: "果物を1日1回は食べていますか?", optionOne: "はい", optionTwo: "時々食べる", optionThree: "食べていない") 35 let quiz4 = Quiz(text: "野菜を十分に食べていますか?", optionOne: "食べている", optionTwo: "日による", optionThree: "食べていない") 36 let quiz5 = Quiz(text: "インスタンス食品は食べましたか?", optionOne: "食べていない", optionTwo: "時々食べた", optionThree: "よく食べた") 37 let quiz6 = Quiz(text: "タバコを吸いましたか?", optionOne: "吸わない", optionTwo: "たまに吸う", optionThree: "たくさん吸う") 38 let quiz7 = Quiz(text: "お酒を飲みましたか?", optionOne: "飲まない", optionTwo: "たまに飲んだ", optionThree: "飲まない") 39 let quiz8 = Quiz(text: "運動して体を動かしましたか?", optionOne: "動かした", optionTwo: "たまに動かした", optionThree: "動かしていない") 40 let quiz9 = Quiz(text: "翌日まで疲れが残ることがありますか?", optionOne: "特にない", optionTwo: "時々ある", optionThree: "よくある") 41 let quiz10 = Quiz(text: "食欲がない時がありますか?", optionOne: "特にない", optionTwo: "時々ある", optionThree: "よくある") 42 let quiz11 = Quiz(text: "原因不明の下痢などが起こりますか?", optionOne: "特にない", optionTwo: "時々ある", optionThree: "よくある") 43 let quiz12 = Quiz(text: "朝スッキリ起きられない時がありますか?", optionOne: "特にない", optionTwo: "時々ある", optionThree: "よくある") 44 let quiz13 = Quiz(text: "中々寝付けないことがありますか?", optionOne: "特にない", optionTwo: "時々ある", optionThree: "よくある") 45 let quiz14 = Quiz(text: "何事にもやる気が起きにくいですか?", optionOne: "特にない", optionTwo: "時々ある", optionThree: "よくある") 46 let quiz15 = Quiz(text:"色々なことに関心が薄くなりますか?", optionOne: "特にない", optionTwo: "時々ある",optionThree: "よくある") 47 let quiz16 = Quiz(text: "体調を崩しやすいですか?", optionOne: "特にない", optionTwo: "時期による", optionThree: "よく崩す") 48 let quiz17 = Quiz(text: "未来について妙に焦ることがありますか?", optionOne: "特にない", optionTwo: "時々ある", optionThree: "よくある") 49 let quiz18 = Quiz(text: "些細なことで腹が立つことがありますか?", optionOne: "特にない", optionTwo: "時々ある", optionThree: "よくある") 50 let quiz19 = Quiz(text: "肌荒れの症状が出ることがありますか?", optionOne: "特にない", optionTwo: "少し荒れる", optionThree: "よく荒れる") 51 let quiz20 = Quiz(text: "睡眠は十分に取れていますか?", optionOne: "取れている", optionTwo: "日による", optionThree: "取れていない") 52 53 quizArray.append(quiz1) 54 quizArray.append(quiz2) 55 quizArray.append(quiz3) 56 quizArray.append(quiz4) 57 quizArray.append(quiz5) 58 quizArray.append(quiz6) 59 quizArray.append(quiz7) 60 quizArray.append(quiz8) 61 quizArray.append(quiz9) 62 quizArray.append(quiz10) 63 quizArray.append(quiz11) 64 quizArray.append(quiz12) 65 quizArray.append(quiz13) 66 quizArray.append(quiz14) 67 quizArray.append(quiz15) 68 quizArray.append(quiz16) 69 quizArray.append(quiz17) 70 quizArray.append(quiz18) 71 quizArray.append(quiz19) 72 quizArray.append(quiz20) 73 74 } 75 76 func showQuiz() { 77 //クイズ番号、クイズ、各選択肢の表示 78 quizNumberLabel.text = String(quizNumber + 1) + "問目" 79 quizTextView.text = quizArray[quizNumber].text 80 81 UIView.setAnimationsEnabled(false) 82 optionOneButton.setTitle(quizArray[quizNumber].optionOne , for:.normal ) 83 optionOneButton.layoutIfNeeded() 84 optionTwoButton.setTitle(quizArray[quizNumber].optionTwo, for: .normal) 85 optionTwoButton.layoutIfNeeded() 86 optionThreeButton.setTitle(quizArray[quizNumber].optionThree, for: .normal) 87 optionThreeButton.layoutIfNeeded() 88 UIView.setAnimationsEnabled(true) 89 } 90 91 func resetQuiz() { 92 point = 0 93 quizNumber = 0 94 showQuiz() 95 } 96 97 98 func updataQuiz() { 99 if quizNumber >= 19 { 100 // 全て完了時の処理 画面遷移するみたいなのでここは消してください 101 performSegue(withIdentifier: "toSecond", sender: nil) 102 //self.performSegue(withIdentifier: "toSecond", sender: nil) 103 } else { 104 quizNumber = quizNumber + 1 105 showQuiz() 106 } 107 } 108 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 109 if segue.identifier == "toSecond" { 110 let resultVC = segue.destination as! resultViewController 111 resultVC.result = "あなたの健康率は(point)%です" 112 } 113 } 114 // MARK: - IBAction 115 116 @IBAction func pushOptionOneButton() { 117 // Option1 のボタンを押したのでPointに5%加算 118 point += 5 119 updataQuiz() 120 121 } 122 123 @IBAction func pushOptionTwoButton() { 124 // Option2 のボタンを押したのでPointに3%加算 125 point += 3 126 updataQuiz() 127 } 128 129 @IBAction func pushOptionThreeButton() { 130 // Option3 のボタンを押したのでPointに1%加算 131 point += 1 132 updataQuiz() 133 } 134}

swift

1import UIKit 2 3class resultViewController: UIViewController { 4 5 @IBOutlet var label:UILabel! 6 7 //ここにppointを渡す 8 var result :String = "" 9 10 override func viewDidLoad() { 11 super.viewDidLoad() 12 13 label.text = String(result) 14 15 16 // Do any additional setup after loading the view. 17 } 18 19 override func didReceiveMemoryWarning() { 20 super.didReceiveMemoryWarning() 21 // Dispose of any resources that can be recreated. 22 } 23 24 25 26 27}

イメージ説明
イメージ説明
イメージ説明
イメージ説明

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

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

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

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

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

hayabusabusash

2019/08/28 08:58

グラフの表示に使う自前のものもしくはライブラリ等はありますか?
seiya_0930

2019/08/28 09:23

特にないです、、、!
hayabusabusash

2019/08/28 09:27

標準ではグラフを表示するようなViewは残念ながらないので、 自作するかライブラリを使うしかありません。 個人的にはライブラリを使った方がいいと思うので以下からいいのを探してみてはいかがでしょうか? ( https://github.com/search?q=swift+chart )
hayabusabusash

2019/08/29 03:23

この質問ではこれ以上回答できることはないので、 上記のライブラリを使うことにするという旨で自己解決にしたほうがいいと思います。 ライブラリを使う上でわからない点が出てきたらまた新しく質問を立ててください。 そうしたほうがそのライブラリに詳しい方が回答してくれる可能性が高くなると思います。
seiya_0930

2019/08/29 10:25

すみません、少しライぶりの操作で手こずってしまったのでまた質問をしたいと思います。 ありがとうございます!
guest

回答1

0

自己解決

ライブラリの導入をすることによって解決

投稿2019/08/29 10:26

seiya_0930

総合スコア17

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問