我們已經完成了標籤這個頁面了,可以看一下再IPhone內這個頁面的功能:
會將標籤頁面輸入的值傳回上個頁面,那這邊就會用到Protocol!
網路上應該有很多Protocol的介紹了,分享一下我所理解的Protocol:
是不是有點太簡單了XD,但我所理解的Protocol其實就這麼的單純,
接下來用實作來理解一下Protocol吧!
首先先在AlarmLabelViewController(標籤頁面)中,新增一個Protocol,
該Protocol內有一個夾帶String參數的Function。
protocol UpdateAlarmLabelDelegate: AnyObject {
func updateAlarmLabel(alarmLabelText: String)
}
Protocol必須要寫在ViewController的Class外面
接著再新增一個變數,存放該Protocol
weak var updateAlarmLabelDelegate: UpdateAlarmLabelDelegate?
可以看到Protocol後面有加Anyobject,Delegate變數前面有加weak,這邊可以去看看「ARC」
到這邊我們就建立完成Protocol了,接下來看看如何使用:
我們需要的功能是:「離開這個頁面時,將輸入框內的文字傳送到前一頁,並且顯示」
因此我們可以在 ViewWillDisappear()內,實作這個Protocol內的updateAlarmLabel()
override func viewWillDisappear(_ animated: Bool) {
if let text = alarmLabelTextField.text {
if text == "" { // 若輸入框內為空白,回傳「鬧鐘」
updateAlarmLabelDelegate?.updateAlarmLabel(alarmLabelText: "鬧鐘")
}else { // 若輸入框內不為空白,回傳「輸入框內的文字」
updateAlarmLabelDelegate?.updateAlarmLabel(alarmLabelText: text)
}
}
}
那到這邊就設定完這個Protocol要做的事情了,明天再來完成誰要實作這個Protocol的部分!