Swift纯Code之旅 Day28. 「新增闹钟功能(1) - Struct使用、取得UIDatePicker值」

前言

如果只有画面像的话,那也太弱了吧!
赶紧来实作新增闹钟的功能,做完拿去炫耀给边身边的人看!
https://ithelp.ithome.com.tw/upload/images/20211008/20108999hNZI6YHKGJ.png

实作

可以看到上面那张图,闹钟主义显示的资讯有两个:

  1. 时间
  2. 标签

因此呢,我们可以大致想像一下流程:
step 1. 按下新增的按钮
https://ithelp.ithome.com.tw/upload/images/20211008/20108999iCmZnM8dZT.png

step 2. 将时间与标签设定完毕後,按下右上角的储存
https://ithelp.ithome.com.tw/upload/images/20211008/2010899971nASxcnw5.jpg

setp 3. 闹钟出现在首页
https://ithelp.ithome.com.tw/upload/images/20211008/20108999Q1SedJ4gsh.png

step 1.已经完成了,因此现在来完成step 2.:「取得时间 & 标签内容」


取得时间&标签内容

在Step 2.中,我们必须要取得「时间」&「标签内容」之後,再回传给主画面去显示新的闹钟,
通常要传送一个以上的值,我会习惯创建一个Struct去包装他,稍微介绍一下Struct:

Struct就像一个盒子,这个盒子里面要装什麽,一切都是由使用者决定的
马上来看看实例吧!

  1. 先新增一个档案,这次不选「Cocoa Touch Class」而是选择「Swift File」
    https://ithelp.ithome.com.tw/upload/images/20211008/20108999kDX5JO1gwp.png

  2. 将它命名为「AddAlarmInfo」
    https://ithelp.ithome.com.tw/upload/images/20211008/20108999vteuzSZTmL.png

这个档案生成後应该会是空无一物的,加上以下的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
    }
}
  1. 盒子的蓝图做好後,那什麽时候会需要将它给实体化出来呢?
    没错!就是使用者按下储存的那一刻,让我们继续在按下储存的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])
    }

当资料已经取得也包装完後,就剩下传值到首页了,剩下的明天继续吧/images/emoticon/emoticon07.gif


<<:  EP23 - [TDD] OrderPayQuery 查询付款结果 (1/2)

>>:  Day29 平常如何学习新的知识?

<ROS笔记区>0.0 一堆 LIUNX的指令

shutdown 用来关机的指令,这个指令只有 root 才有权力下! [root@tsai roo...

AWS Academy 学习平台建立 Learner Lab - 教师

AWS Academy 学习平台建立 Learner Lab - 教师 AWS Academy Le...

Day26 Redis架构实战-Redis丛集架构/Gossip协议

Redis丛集架构目标情境 高效能与可依照效能需求线性扩增节点达到1000个 最少3个Master,...

Day 21 - [语料库模型] 09-回馈机制

聊天机器人虽有问答集可以回覆大部分常见问题,但难免会有疏漏。因此本研究亦设计回馈机制,若使用者发现机...

[Golang]同步工具-sync包的Wait、Signal、Broadcast方法说明-心智图总结

1. 条件变数的Wait方法,做了什麽? Wait方法的用途,为等待通知。 先看一下Wait方法的程...