How to programmatically create new calendars on iPhone that will sync with iCal

I am looking for a way to create a new Calendar on an iphone device programmatically. I watched the Event Kit, and it clearly indicates how to create a new event on the calendar, as well as a convenient way to collect all the calendars in the code. What I cannot find is to create a new one that is saved on the device.

Any ideas

+4
source share
2 answers

I found this link that you can fix:

How to create a new EKCalendar on an iOS device?

Hope this helps you!

+2
source

Check kal repository to create iphone software timer just like iCal

Check this method to create a program event:

-(void)initCalendar { // An array of 1 dictionary object, containing START and END values. NSMutableArray* pvDict = [[NSMutableArray alloc] initWithContentsOfURL:[NSURL URLWithString:PV_URL ]]; // Check if the private view event already exists in the default calendar. // Then set the calendar button state. // Get a entry point to the Calendar database. self.store = [[EKEventStore alloc ] init ]; // Get an array of all the calendars. NSArray *calendars = store.calendars; // Get the default calendar, set by the user in preferences. EKCalendar *defaultCal = store.defaultCalendarForNewEvents; // Find out if this calendar is modifiable. BOOL isDefaultCalModifiable = defaultCal.allowsContentModifications ; // Create an event in the default calendar. self.event = [ EKEvent eventWithEventStore:store ]; self.event.title = CHELSEA_SPACE ; self.event.location = CHELSEA_ADDRESS ; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyy-MM-dd HH:mm:ss.S"]; NSString *startString = [[ pvDict objectAtIndex:0] objectForKey:@"starts" ]; NSDate *dateStart = [dateFormatter dateFromString:startString]; NSString *endString = [[ pvDict objectAtIndex:0] objectForKey:@"ends" ]; NSDate *dateEnd = [dateFormatter dateFromString:endString]; self.event.startDate = dateStart; self.event.endDate = dateEnd; self.event.calendar = defaultCal ; // Alternative code to add 2.5 hours to start time. // [[NSDate alloc] initWithTimeInterval:9000 sinceDate:event.startDate]; // Search for events which match this date/time start and end. // Compare the matched events by event TITLE. NSPredicate *predicate = [store predicateForEventsWithStartDate:event.startDate endDate:event.endDate calendars:calendars]; NSArray *matchingEvents = [store eventsMatchingPredicate:predicate]; self.calendarButton.enabled = NO; if( ! isDefaultCalModifiable ) { // The default calendar is not modifiable return ; } if ( [ matchingEvents count ] > 0 ) { // There are already event(s) which match this date/time start and end. // Check if this event is the PV EKEvent *anEvent; int j; for ( j=0; j < [ matchingEvents count]; j++) { anEvent = [ matchingEvents objectAtIndex:j ] ; if([ CHELSEA_SPACE isEqualToString: anEvent.title ]) { // PV event already exists in calendar. return; } } [ anEvent release ]; } self.calendarButton.enabled = YES; [ pvDict release ]; } -(void)addEventToCalendar:(id)sender { NSError *error; BOOL saved = [self.store saveEvent:self.event span:EKSpanThisEvent error:&error]; NSLog(@"Saved calendar event = %@\n", (saved ? @"YES" : @"NO")); self.calendarButton.enabled = NO; } 
0
source

All Articles