Вы настраиваете календарь событий дважды
[event setCalendar:c];
[event setCalendar:[[eventStore calendars]objectAtIndex:calendararray]];
Скажите, пожалуйста, где вы взяли calendararray
это массив? я больше похож на indexKey.
Вместо ввода индекса выбранного календаря передайте его заголовок, например: [calendar title]
или calendar.title
затем, используя этот заголовок, найдите тот в полном списке редактирования и не редактируемый.
UPDATE
Просто сделайте что-то вроде этого:
EKCalendar *theSelectedCalendar;
// selectedCalendarTitle comes from your delegate instead of your index...
for (EKCalendar *thisCalendar in eventStore.calendars){
if ([thisCalendar.title isEqualToString:selectedCalendarTitle]){
[event setCalendar:thisCalendar];
}
}
ОБНОВЛЕНИЕ 2
EKCalendar *theSelectedCalendar;
// selectedCalendarTitle comes from your delegate instead of your index...
for (int i=0; i<=([eventStore.calendars count]-1); i++) {
if ([[[[eventStore calendars]objectAtIndex:i] title] isEqualToString:selectedCalendarTitle]){
[event setCalendar:[[eventStore calendars]objectAtIndex:i]];
}
}
ОБНОВЛЕНИЕ 3
//Present the picker populated with the array: eventStore.calendars. This should return the index and store it in: indexOfSelectedCalendarFromEventSoreCalendars
if ([[[eventStore calendars] objectAtIndex:indexOfSelectedCalendarFromEventSoreCalendars] allowsContentModifications]){
[event setCalendar:[[eventStore calendars] objectAtIndex:indexOfSelectedCalendarFromEventSoreCalendars]];
} else {
NSLog(@"Selected calendar cannot be modified."); //Present the picker again for the user to select another calendar.
}