如果只有畫面像的話,那也太弱了吧!
趕緊來實作新增鬧鐘的功能,做完拿去炫耀給邊身邊的人看!
可以看到上面那張圖,鬧鐘主義顯示的資訊有兩個:
- 時間
- 標籤
因此呢,我們可以大致想像一下流程:
step 1. 按下新增的按鈕
step 2. 將時間與標籤設定完畢後,按下右上角的儲存
setp 3. 鬧鐘出現在首頁
step 1.已經完成了,因此現在來完成step 2.:「取得時間 & 標籤內容」
在Step 2.中,我們必須要取得「時間」&「標籤內容」之後,再回傳給主畫面去顯示新的鬧鐘,
通常要傳送一個以上的值,我會習慣創建一個Struct去包裝他,稍微介紹一下Struct:
Struct就像一個盒子,這個盒子裡面要裝什麼,一切都是由使用者決定的
馬上來看看實例吧!
先新增一個檔案,這次不選「Cocoa Touch Class」而是選擇「Swift File」
將它命名為「AddAlarmInfo」
這個檔案生成後應該會是空無一物的,加上以下的Code
// 創建一個Struct 名稱為:AddAlarmInfo
struct AddAlarmInfo {
// 這個盒子被實體化後,裡面必須要裝兩個變數
// 第一個:名稱為time、型態為Data的變數
// 第二個:名稱為annotation、型態為String的變數
let time: Date
let annotation: String
// 寫一個init的Function
// 代表這個盒子被實體化後,一定要帶入兩個參數
// 第一個參數型態必須為Date
// 第二個參數型態必須為String
init(time: Date,
annotation: String) {
// 將帶入的參數值,分配給這個盒子內原本的變數
self.time = time
self.annotation = annotation
}
}
盒子的藍圖做好後,那什麼時候會需要將它給實體化出來呢?
沒錯!就是使用者按下儲存的那一刻,讓我們繼續在按下儲存的Function內加點東西
回到「AddAlarmViewController」,找到之前新增的function「saveAlarm()」新增以下Code:
想了解以下標籤內容的,可以參考Day15.的Delegate介紹
@objc func saveAlarm() {
// 實體化我們創建的Struct「AddAlarmInfo」,並裝在saveAlarmData內
//「AddAlarmInfo」的第一個參數,就給他DatePicker上面的時間
//「AddAlarmInfo」的第二個參數,就給他標籤的內容
let saveAlarmData = AddAlarmInfo(time: self.datePicker.date,
annotation: self.addAlarmDetails[1])
}
當資料已經取得也包裝完後,就剩下傳值到首頁了,剩下的明天繼續吧