Swift - 使用EventKit操作"提醒事项"(2、新增、修改、删除提醒)
来源:互联网 发布:成都算法工程师招聘网 编辑:程序博客网 时间:2024/06/05 17:26
1,添加提醒
下面样例中,填写提醒内容、选择提醒时期后,点击“保存”即可将提醒添加到系统的“提醒事项”中。
(这里我将日期输入框的 inputView 设置成 UIDatePicker,这样点击日期文本框的时候底部会自动出现日期选择器来选择时间。)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import
UIKit
import
EventKit
class
ViewController
:
UIViewController
{
var
eventStore:
EKEventStore
!
//提醒信息文本框
@IBOutlet
weak
var
reminderTextField:
UITextField
!
//提醒时间文本框
@IBOutlet
weak
var
dateTextField:
UITextField
!
//提醒日期选择器
var
datePicker:
UIDatePicker
!
override
func
viewDidLoad() {
super
.viewDidLoad()
self
.eventStore =
EKEventStore
()
//设置提醒时间文本框使用的日期选择器
datePicker =
UIDatePicker
()
datePicker.addTarget(
self
, action: #selector(
ViewController
.addDate),
forControlEvents: .
ValueChanged
)
datePicker.datePickerMode =
UIDatePickerMode
.
DateAndTime
dateTextField.inputView = datePicker
}
//日期选择器响应方法
func
addDate(){
//日期样式
let
formatter =
NSDateFormatter
()
formatter.dateFormat =
"yyyy年MM月dd日 HH:mm"
//更新提醒时间文本框
self
.dateTextField.text = formatter.stringFromDate(datePicker.date)
}
//保存按钮响应办法
@IBAction
func
addReminder(sender:
AnyObject
) {
//获取"提醒"的访问授权
self
.eventStore.requestAccessToEntityType(
EKEntityType
.
Reminder
) {
(granted:
Bool
, error:
NSError
?) ->
Void
in
//创建提醒条目
let
reminder =
EKReminder
(eventStore:
self
.eventStore)
reminder.title = (
self
.reminderTextField.text)!
let
dueDateComponents =
self
.dateComponentFromNSDate(
self
.datePicker.date)
reminder.dueDateComponents = dueDateComponents
reminder.calendar =
self
.eventStore.defaultCalendarForNewReminders()
//保存提醒事项
do {
try
self
.eventStore.saveReminder(reminder, commit:
true
)
print
(
"保存成功!"
)
}catch{
print
(
"创建提醒失败: \(error)"
)
}
}
}
//根据NSDate获取对应的NSDateComponents对象
func
dateComponentFromNSDate(date:
NSDate
)->
NSDateComponents
{
let
calendarUnit:
NSCalendarUnit
= [.
Minute
, .
Hour
, .
Day
, .
Month
, .
Year
]
let
dateComponents =
NSCalendar
.currentCalendar().components(calendarUnit,
fromDate: date)
return
dateComponents
}
override
func
didReceiveMemoryWarning() {
super
.didReceiveMemoryWarning()
}
}
2,修改提醒
修改提醒同新增提醒差不多,我们首先获取到需要修改的 Reminer 对象,然后修改其时间或标题。最后调用 eventStore 的 saveReminder 方法保存即可。
下面样例将所有的提醒标题都修改成“欢迎访问hangge.com”
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//获取"提醒"的访问授权
self
.eventStore.requestAccessToEntityType(
EKEntityType
.
Reminder
) {
(granted:
Bool
, error:
NSError
?) ->
Void
in
if
granted{
// 获取授权后,我们可以得到所有的提醒事项
let
predicate =
self
.eventStore.predicateForRemindersInCalendars(
nil
)
self
.eventStore.fetchRemindersMatchingPredicate(predicate, completion: {
(reminders: [
EKReminder
]?) ->
Void
in
//遍历所有提醒并修改
for
reminder
in
reminders! {
reminder.title =
"欢迎访问hangge.com"
reminder.calendar =
self
.eventStore.defaultCalendarForNewReminders()
//保存提醒事项
do {
try
self
.eventStore.saveReminder(reminder, commit:
true
)
print
(
"保存成功!"
)
}catch{
print
(
"保存失败: \(error)"
)
}
}
})
}
else
{
print
(
"获取提醒失败!需要授权允许对提醒事项的访问。"
)
}
}
3,删除提醒
我们首先获取到需要删除的 Reminer 对象,然后调用 eventStore 的 removeReminder 方法即可。
下面样例将系统里所有的提醒删除。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//获取"提醒"的访问授权
self
.eventStore.requestAccessToEntityType(
EKEntityType
.
Reminder
) {
(granted:
Bool
, error:
NSError
?) ->
Void
in
if
granted{
// 获取授权后,我们可以得到所有的提醒事项
let
predicate =
self
.eventStore.predicateForRemindersInCalendars(
nil
)
self
.eventStore.fetchRemindersMatchingPredicate(predicate, completion: {
(reminders: [
EKReminder
]?) ->
Void
in
//遍历所有提醒并删除
for
reminder
in
reminders! {
//保存提醒事项
do {
try
self
.eventStore.removeReminder(reminder, commit:
true
)
print
(
"删除成功!"
)
}catch{
print
(
"删除失败: \(error)"
)
}
}
})
}
else
{
print
(
"获取提醒失败!需要授权允许对提醒事项的访问。"
)
}
}
0 0
- Swift - 使用EventKit操作"提醒事项"(2、新增、修改、删除提醒)
- 操作提醒(删除)
- iOS 简介eventKit框架(译) 日历提醒应用等
- iOS开发用Eventkit向日历和提醒事项中加入事件和闹铃
- 使用iPhone来提醒自己-日历和提醒事项
- swift 往系统日历中添加提醒事项
- 提醒
- 提醒
- 提醒
- 提醒
- 提醒
- 提醒
- swift笔记-提醒控件
- 删除前提醒
- js 删除提醒
- 修改 Iphone 手机短信提醒
- 苹果提醒更新 修改
- iPhone,提醒事项,设置了,为什么不起作用?
- 切换git地址
- JAVA8新特性(Lambda 表达式)
- 7. Reverse Integer
- APIcloud 按两次返回键退出程序,android按两次返回键退出程序
- 算法-第四版-练习1.2.10解答
- Swift - 使用EventKit操作"提醒事项"(2、新增、修改、删除提醒)
- mysql时间日期查询格式
- Codeforces Round #373 (Div. 2) C: Efim and Strange Grade
- Protostuff序列化工具类
- THINKPHP 伪静态 URL重写
- Gradle for Android 使用之旅之gradle的基础
- poj1664 放苹果
- Android Studio之Error:(158) Error: Expected resource of type id [ResourceType]
- JAVA入门第一季-1.JAVA初体验