Я не уверен, что весь код, который вы выложили, относится к одной и той же версии, но если вы скинули его вместе, я бы увидел по крайней мере следующую проблему:
Вы говорите
[event setCalendar:calendararray];
не работает.
Кажется, calendararray
установлено в методе eventview.m
calendararray:
.
Это в свою очередь вызывается из calendar.m
pickerView:didSelectRow:
, где он берет выбранный объект из arrayColors
.
В методе calendar.m
viewDidLoad
arrayColors
инициализируется с названиями календарей пользователей, а не календарями.
Таким образом, вы в конечном итоге даете EKEvent
метод setCalendar:
NSString
вместо EKCalendar
.
Не зная остальную часть вашей программы, в качестве исправления я бы попытался сохранить EKCalendar
сами объекты в arrayColors
.
Итак, в calendar.m
попробуйте изменить
[arrayColors addObject:thisCalendar.title];
в viewDidLoad
до
[arrayColors addObject:thisCalendar];
Затем измените pickerView:titleForRow:
на
- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
EKEvent *event = [arrayColors objectAtIndex:row]
return event.title;
}
Наконец, в eventview.m
изменить calendararray:
- (void) calendararray:(EKCalendar *)array{
NSLog(@"calendarNameTextFieldStringFromTable %@", array);
calendararray = array;
calendarLabel.text = array.title;
calendarLabel.textColor = [UIColor brownColor];
}