#84 Ocean 心理測驗,從五大特質了解你的天性
傳資料
Published in
5 min readAug 31, 2021
題目
心理測驗題目
MVC
View
storyboard 畫面
若一個 controller 有多個 segue
- 從一個 segue 拉一個 IBSegueAction
- 其他 segue:從 segue 拉到 IBSegueAction
- ID:每個 segue 設定 ID(或從 sender 設定,之後教)
- IBSegueAction 的 func:自己增加2個參數(sender, segueIdentifier),並以判斷式決定要傳到哪裡
- 確認 segue 的 slelctor 內的參數是否包含剛剛增加的參數(如下圖)
Model
Question.Swift
用 array 儲存題目,以及該題目得到的分數
Btn.Swift
配合 getScore( userBtn: Btn ) 取得使用者按的選項代表的分數
程式碼在下方第一頁的部分
PersonalityTrait.Swift
用 array 儲存分析的人格特質結果
用 struct 定義 OceanScore 型別,方便一次傳多筆資料
Controller
第一頁:ViewController
- 3 個 function:
- getScore:取得使用者按 Btn 代表的分數,並儲存至 array 裡(於 Question.Swift 裡創建的 array)
- addUpScore:計算五種人格特質的分數
- updateUI:更換題目內容
- 每個 Button 按下去會觸發 getScore( ) 取得分數
- IBSegueAction 傳資料 & 資料重置
要先在下一頁定義 property 以儲存要傳的資料
第二頁:ScoreTableViewController
- updateUI( ) 將前一夜傳過來的資料顯示於畫面
- 傳資料到第三頁
一樣先在下一頁定義 property 以儲存要傳的資料
- IBSegueAction:依照在 segue 設定的 ID 傳不同的資料
第三頁:AnalyzeViewController
- updateUI( )
- playAgain:跳回第一個畫面
之前傳完資料後就已經歸零了,故不需另外設定
參照同學們的作業,大多數都是使用 dismiss,但我的用 dismiss 沒有作用,就使用 popToRootViewController
self.dismiss(animated: true, completion: nil)