如何在日历中添加事件

时间:2011-11-20 04:18:26

标签: objective-c cocoa-touch ipad ios5 xcode4.2

到目前为止,我正在为iPad制作日历 我有日历视图,但是,现在我需要在其中创建一个事件。 我在此示例中使用YFCalendar http://www.yellowfield.co.uk/blog/?p=28

现在我需要添加一个可以在当天加入的新事件

但是,我希望在类似于默认日历的小窗口中看到事件摘要。

Example_Image: http://media.wiley.com/Lux/45/271245.image1.jpg

我不知道实现这个结果需要什么样的控制。

我不使用默认日历

一些建议? 最好以开源方式分析,以任何方式,任何答案都欢迎

1 个答案:

答案 0 :(得分:0)

请参阅此处的事件包编程指南:

http://developer.apple.com/library/ios/#documentation/DataManagement/Conceptual/EventKitProgGuide/Introduction/Introduction.html

此处的苹果示例代码:https://developer.apple.com/library/ios/samplecode/SimpleEKDemo/Introduction/Intro.html

添加事件的代码使用EKEventEditViewController:

// Create an instance of EKEventEditViewController 
EKEventEditViewController *addController = [[EKEventEditViewController alloc] init];

// Set addController's event store to the current event store
addController.eventStore = self.eventStore;
addController.editViewDelegate = self;
[self presentViewController:addController animated:YES completion:nil];

添加之后,您可以使用该教程中的代码获取事件,该代码使用谓词检索事件(在本例中为日期):

NSDate *startDate = [NSDate date];

//Create the end date components
NSDateComponents *tomorrowDateComponents = [[NSDateComponents alloc] init];
tomorrowDateComponents.day = 1;

NSDate *endDate = [[NSCalendar currentCalendar] dateByAddingComponents:tomorrowDateComponents
                                                                toDate:startDate
                                                               options:0];
// We will only search the default calendar for our events
NSArray *calendarArray = [NSArray arrayWithObject:self.defaultCalendar];

// Create the predicate
NSPredicate *predicate = [self.eventStore predicateForEventsWithStartDate:startDate
                                                                  endDate:endDate
                                                                calendars:calendarArray];

// Fetch all events that match the predicate
NSMutableArray *events = [NSMutableArray arrayWithArray:[self.eventStore eventsMatchingPredicate:predicate]];

return events;