iOS Task#27 | IBAction & IBOutlet

AH
彼得潘的 Swift iOS / Flutter App 開發教室
4 min readJun 21, 2022

從學會每個語言的招呼用語來作為踏出疫情解封後旅遊的第一步吧🐾

Step 1. 先用之前用 Storyboard 設計 App 的各種元件設計好版面

Step 2. IBOutlet

IBOutlet 產生變數,存取物件中的資料 ➔ 是屬性,放在 class 中前段的位置 (viewDidLoad之上)

  • UISegmentedControl

用 SegmentedControl 的分頁來切換不同時段招呼用語

  • UIButton

不同國家的按鈕來切換不同語言的招呼用語

  • TextField 讀取文字框的內容

像是文字框是要讓 User 填入文字,再讓文字框去存取得到的內容

連線後產生:

最後的 text 型別為 String?,所以要用 text! 來讀取它

  • UISlider

下半部作為調整輸入文字講話不同屬性的 Slider

Step 3. IBAction

UIControl 類型的 — IBAction (e.g. UIButton, UISlider, UISegmentedControl, UISwitch, UIStepper, UIDatePicker, UIPageControl)

IBAction 產生 function,執行動作 ➔ 是方法,放在 class 中後段的位置 (viewDidLoad之下)

Label 讀取 Slider 滑動帶出的參數

AVSpeechUtterance

之前在 Playground 練習過的講話合成器,這個 IBAction 要執行講話的功能,一樣記得要在開頭先 import AVFoundation

連線後加入一些講話程式的條件:

Step 4. IBAction UIButton 選取不同國家招呼用語 (多個元件連到同一個IBAction)

先連第一個Button

再從圈圈拉回第二個button

Step 5. if else 條件切換 Segmented Control

不同時段的打招呼用語,用 SegmentedControl 切換時段

if daytimeSegmentControl.selectedSegmentIndex == 0 {
if sender == twButton {
greetings = AVSpeechUtterance(string:"早安")
greetings.voice = AVSpeechSynthesisVoice(language: "zh-TW")
}
} else if daytimeSegmentControl.selectedSegmentIndex == 1 {
if sender == twButton {
greetings = AVSpeechUtterance(string:"午安")
greetings.voice = AVSpeechSynthesisVoice(language: "zh-TW")
}
} else {
if sender == twButton {
greetings = AVSpeechUtterance(string:"晚安")
greetings.voice = AVSpeechSynthesisVoice(language: "zh-TW")
}
}

--

--