Swift class / 7. 來幫程式碼拉紅線吧!

Miki Fan
MorrisDesign
Published in
4 min readAug 31, 2016

這是8/17第七堂課的紀錄,原本要連第八堂課一起寫完,沒想到光拉紅線就能滿滿一篇,所以就先講解這部分吧!

上次有提到要補充Array的部分,已經補上去了,有空可以看看,連結在這裡

做出一個比較有彈性的UI

首先,這案例展示幫storyboard與Assistant editor拉紅線,效果如下,能根據不同選擇,得到不同結果。以UI而言就是變換兩種不同Button(看結果vs再玩一次),但後來彼得潘說也可以做在同一個元件上,只要設定條件更改title就可以,會比較乾淨的寫法。

這案例告訴我們,無論如何都要有真心唷!

1. 執行步驟:

在storyboard建好元件後,按下control拉線進入assistant editor,會跳出connection,分成Outlet跟Action(執行功能),Event指觸發事件。此時右方就會出現@IBoutlet跟@IBAction,代表元件跟程式的媒介,也要注意元件的屬性,像label就不會有action。

兩個圈圈即是assistant editor
Control拉線後會跑出Connection 選單
Connection分成Outlet跟Action兩種
Action內Event事件

2. 加入程式

接著就會開始在@IBAction內開始寫入if…else…,其中用到的Bool有switch的.isOn及通用的.isHidden(用來控制顯示或隱藏)

3. 卡關關鍵:

過程中第一個卡關是,再玩一次的選項,我想讓按下選項後,同時清空生日欄位及所有結果,但一直找不到寫法,原來可以用nil就解決了。

birthDay.text = nil

第二個卡關是,將trueHeart switch關閉後就crash,原來是忘記寫if內的if對應的else,以及View本身的警告要記得消除

else { 
anwserNo.isHidden = false
anwserYes.isHidden = true
playAgain.isHidden = false
}
左方Received Action不能有任何警告

再仔細檢查邏輯有沒有漏掉的地方,這樣就OK了!

上課複習筆記

If let :檢查optional內是否有東西

var cuteBaby:Baby? = Baby()
if let baby = cuteBaby {
let eatFood = baby.eat(hour: 2)
if let food = eatFood {
let message = “baby \(food.name)”

Bool:是一種型別(type),用來判斷true和false兩種參數

這堂課就記錄到這邊:)

--

--

Miki Fan
MorrisDesign

An Interaction designer. Sharing something learned from life.