我们已经完成了标签这个页面了,可以看一下再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的部分!
<<: 【後转前要多久】# Day10 CSS - CSS常用属性I (文字、背景)
WannaCry 还没逆完,把最後一天的内容拿出来挡一下。请读者见谅XD 今天不会讲解技术,会推荐基...
上回介绍了如何使用建构式来建立原型,接着今天介绍使用 Object.create() 建立多层原型,...
今天我们来讲怎麽使用 Line Messaging API 的 Button Template 先送...
昨天稍微看了一下范例程序码是如何包装API的input+output参数型别 今天就来继续改造原本的...
继续执行上一篇未完的流程,如下图,点选 Projucer 上方的 Xcode 图示(若左方的 Exp...