ios App課程練習#14-搭配else if,做個判斷該不該請假的app(TAKE A DAY OFF?)
Sep 2, 2018 · 6 min read

又到了,想盡辦法融合各種學習目標,產出一隻app的時候了。
主要學習目標:
else if, if, else 混搭運用
Segmented Control 對應不同圖片
contains內容偵測
再次複習:
偵測 slider 的 value 變化
新增 Cocoa Touch Class
TAKE A DAY OFF? 這App能用來做什麼
說到請假,有時想要好好放鬆請個假出去旅行,都要經歷一波糾結。會不會被老闆殺?會不會被同事打?會不會請太多假了?這些問題都會從心裡漫出來,這時還真的需要有人幫我下個決策,那何不做個決策app呢!
App畫面流程

起始畫面進入後,按下按鈕,進入條件畫面輸入各種用來判斷你能不能請假的條件,按下按鈕判斷是否能夠請假,若可以請假,將進入放鬆嚮導畫面。
接著來說說製作過程
先看看在storyboard上的作業畫面

1.條件畫面:

透過不同條件,來判斷使用者能不能請假。
假如建議放假,將跳出按鈕,引導自下一畫面。
以下為頁面的程式碼,可以仔細看會發現,
app判斷你能不能請假的條件,只在於心態,
而不是年資或是多久沒請假了。
(假如只是為了想睡覺是不給放的!)
import UIKitclass ViewController: UIViewController {@IBOutlet weak var yearSliderController: UISlider!@IBOutlet weak var relaxSegmented: UISegmentedControl!@IBOutlet weak var breakSegmented: UISegmentedControl!@IBOutlet weak var whySegmented: UISegmentedControl!@IBOutlet weak var yearLabel: UILabel!@IBOutlet weak var answerImage: UIImageView!@IBOutlet weak var nextPageButton: UIButton!var numValue:Int=0override func viewDidLoad() {super.viewDidLoad()// Do any additional setup after loading the view, typically from a nib.}@IBAction func giveTheAns(_ sender: Any) {if whySegmented.selectedSegmentIndex == 0{answerImage.image = UIImage(named: “Group 4”)nextPageButton.isHidden = true} else {answerImage.image = UIImage(named: “Group 3”)nextPageButton.isHidden = false}}@IBAction func yearSlider(_ sender: Any) {yearLabel.text = String(Int(yearSliderController.value))}}
此畫面動態呈現:

2.嚮導畫面:

嚮導畫面,設計的概念走一種聊天視窗的感覺,但因為能力有限,先用一堆Image來擋擋哈哈哈。從輸入匡輸入不同文字,按下發送按鈕,透過contains內容偵測,來判斷下張圖片的顯示結果。若輸入關鍵字「海」、「山」、「電影」會顯示特定對話框(可惡⋯圖片有錯字),若輸入其他文字,都會顯示誠品書局的建議對話框。
以下為頁面的程式碼:
import UIKitclass SecondViewController: UIViewController {@IBOutlet weak var yourQuestion: UITextField!@IBOutlet weak var robotAnswer: UIImageView!override func viewDidLoad() {super.viewDidLoad()// Do any additional setup after loading the view.func touchesBegan(_touches: Set<UITouch>, with event: UIEvent?) {self.view.endEditing(true)}}@IBAction func sendButton(_ sender: Any) {let question = yourQuestion.text!if question.contains(“海”){robotAnswer.image = UIImage(named: “sea”)}else if question.contains(“山”){robotAnswer.image = UIImage(named: “m”)}else if question.contains(“電影”){robotAnswer.image = UIImage(named: “movie”)}else{robotAnswer.image = UIImage(named: “book”)}}
此畫面動態呈現:

最後是完整畫面動態呈現

以及Sketch設計畫面(充滿假對話框哈哈):

最後是git:
寫得挺順的一次,收工!

