[英]Accessing programmatically created calendar on iOS device
我已经弄清楚了如何在我的iPhone应用程序中添加自定义日历,但是我不知道如何将该日历添加到设备的日历中。 从应用程序内部查看时,该事件显示正确的日历,但是即使我点击某个事件的日历行,我的日历也不在列表中,如果要保持日历名称正确,则必须取消。 有没有一种方法可以“订阅”我本地创建的日历,以便可以从设备上的“日历”应用程序中看到它(显然,我还希望它与用户的计算机同步,等等)。
它与iCloud有关。 启用iCloud时,将隐藏具有本地(EKSourceTypeLocal)来源的日历。
今天,我一直在为此苦苦挣扎,而这一切似乎都取决于我(以及最终用户)在设备上的日历设置。
我个人以Exchange格式向下同步我的GMail日历-这样可以防止显示“本地”日历。
通过依赖于用户设置来操作EKSource,可以正确显示您的日历-这适用于我的Exchange方案,有关更多方案,请参阅EKSource类参考。 考虑检查iCloud!
EKCalendar *calendar = [EKCalendar calendarWithEventStore:self.eventStore];
calendar.title = @"My Calendar";
EKSource *localSource = nil;
EKSource *defaultSource = [self.eventStore defaultCalendarForNewEvents].source;
if (defaultSource.sourceType == EKSourceTypeExchange) {
localSource = defaultSource;
} else {
for (EKSource *source in self.eventStore.sources) {
if (source.sourceType == EKSourceTypeLocal) {
localSource = source;
break;
}
}
}
if (localSource) {
calendar.source = localSource;
} else {
NSLog(@"Error: no local sources available");
}
NSError *error = nil;
BOOL result = [self.eventStore saveCalendar:calendar commit:YES error:&error];
if (result) {
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:calendar.calendarIdentifier forKey:@"Calendar"];
[userDefaults synchronize];
NSLog(@"Saved calendar to event store");
} else {
NSLog(@"Error saving Calendar");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.