Swift Practice # 70 期中測驗選擇題,地理知識大哉問
上一篇透過九九乘法表與選擇題的練習,完成了基礎九九乘法表的選擇題。
這篇剛好看到彼得潘的期中測驗作業,想確定自己的學習進度。
依照上述文章所示,本作業需要達成的項目如下
- 製作選擇題 App,每題有四個選項。
- 答對一題加 10 分 。
- 畫面上顯示目前題目是第幾題。
- 自訂選擇題的資料型別。
- 題庫有 n 題,隨機出其中的 10 題,每次玩的時候題目順序都不一樣。( n > 10 )
- 包含多個頁面,至少有問題頁面和分數頁面。
- 利用 IBSegueAction & performSegue 將結果從問題頁傳到分數頁。
- 使用 UIAlertController 顯示 alert。
所以上述需要的條件都要逐一達成才能算是完成這個作業練習。那就嘗試練習看看。
選擇題資料來源:
本作業使用之題目來源,參照國家地理知識大競賽內使用之初賽題目,本作業無營利目的僅供本人練習Swift開發使用。
作業使用圖片來源:
https://pixabay.com/zh/photos/hands-world-map-global-earth-600497/
畫面佈局:
從上面的佈局可以看到所需的元件如下:
第一頁:
UILabel * 1
UIImageView * 1
UIbutton * 1
第二頁:
UILabel * 2
UIbutton * 4
第三頁:
UILabel * 1
自定義struct:
從前輩的文章可以發現前輩是將四個選項獨立定義為變數字串,但是我想到後續可能還是要將四個答案透過隨機方式排列。所以我將答案選項定義為字串Array,後續就可以透過.shuffle()去改變顯示的位置。
第二頁程式碼:
IBOutlet
變數與題庫
viewDidLoad
自定義Function
4個Button的IBAction
傳資料給下一頁的SegueAction
第三頁程式碼:
執行結果:
心得與問題發現:
透過前輩的程式碼發現自己的不知道如何執行performSegue傳遞資料到下一頁,透過彼得潘上課的影片就找到答案了。自己打程式碼也理解到如何完成顯示其他頁面的方式。
目前的問題是到顯示結果分數的頁面後應該還要有一個機制可以回到開頭,雖然透過Navigation Controller可以完成,但還是要找到其他方法來完成。持續加油!!
程式碼與Github:
struct
問答題目頁面
顯示分數頁面