How to Create iCal event in IOS

Basically calendar control needs to keep informations in a managed way with dates. for that we need to integrate calendar controls in IOS programatically. There are lots of custom controls available in wan please take a look at this link Custom Calendar Cotrols

Process for creating programmatically 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;

}
Scroll to Top

Discover more from CODE t!ps

Subscribe now to keep reading and get access to the full archive.

Continue reading