昨天我们已经将资料打包完成了,离完成闹钟功能只差一点点了,
只要把资料回传到首页,就可以实现新增闹钟的功能了!
这边将会使用Delegate的方式做资料回传,马上来看看如何传值吧!
之前有稍微用我的方式介绍过Delegate的概念,有兴趣的可以参考「Day15」
那马上来实作吧!
protocol UpdateAlarmListDelegate: AnyObject{
// 该Protocol含有一个Function,带有一个参数:「alarmData」,其型态为「AddAlarmInfo」
func updateAlarmList(alarmData: AddAlarmInfo)
}
weak var updateAlarmListDelegate: UpdateAlarmListDelegate?
@objc func saveAlarm() {
// 实体化我们创建的Struct「AddAlarmInfo」,并装在saveAlarmData内
//「AddAlarmInfo」的第一个参数,就给他DatePicker上面的时间
//「AddAlarmInfo」的第二个参数,就给他标签的内容
let saveAlarmData = AddAlarmInfo(time: self.datePicker.date,
annotation: self.addAlarmDetails[1])
// 使用updateAlarmListDelegate内的「updateAlarmList」回传「saveAlarmData」
updateAlarmListDelegate?.updateAlarmList(alarmData: saveAlarmData)
// 将新增闹钟页面给关闭
self.dismiss(animated: true, completion: nil)
}
@objc func addAlarm() {
let vc = AddAlarmViewController()
// 指定「AddAlarmViewController」的Delegate由该Controller实作
vc.updateAlarmListDelegate = self
let nv = UINavigationController(rootViewController: vc)
present(nv, animated: true, completion: nil)
}
此时会跳出以下Error,该Error的意思是:
你告知「UpdateAlarmListDelegate」将由这个Viewcontroller实作,
但却没实作里面的Function:「updateAlarmList」
因此,可以在Class外面,加入以下Code来实作「updateAlarmList」
extension AlarmViewController: UpdateAlarmListDelegate {
func updateAlarmList(alarmData: AddAlarmInfo) {
// print看看回传过来的值是什麽
print(alarmData)
}
}
来试试看Print出来的会是什麽吧!首先先做以下设定
按下储存看看会Print出什麽吧!
已经确定可以正常传值了,只是时间的值好像怪怪的?
明天来了解一下是什麽状况,顺便将这些值新增在闹钟上吧!
<<: Re: 新手让网页 act 起来: Day24 - React Hooks 之 useMemo
看完这篇文章你会得到的成果图 前言 这篇我们要来学一个新的东西 QProgressBar! QPro...
在今天的文章中,我们准备开始建立视觉化(Visualize)元件,来展现一下kibana强大的图形化...
今天画个丑丑的图片来介绍内边距(padding) 边框(border) 外边距(margin) 这张...
今天也是练习CPE的题目 世界闻名的黑社会老大A先生要搬到纽约来了。在那里他有一个大家族,并且他们都...
今天要来说到在APP中加入Google map,以下概略的介绍一些建置与功能用法,首先,我们要来新增...