我想在我的应用程序中在iOS上创建一个新的自定义日历。
我搜索有关它如何工作的一些说明。但我的代码没有工作/日历没有创建
EKEventStore *eventStore = [[EKEventStore alloc] init];
EKSource *theSource = nil;
for (EKSource *source in eventStore.sources) {
if (source.sourceType == EKSourceTypeLocal) {
theSource = source;
break;
}
}
NSString *identifier;
EKCalendar *cal;
if (identifier == nil)
{
cal = [EKCalendar calendarForEntityType:EKEntityTypeEvent eventStore:eventStore];
cal.title = @"MyCustomCalendar";
cal.source = theSource;
[eventStore saveCalendar:cal commit:YES error:nil];
NSLog(@"cal id = %@", cal.calendarIdentifier);
}
else
{
cal = [eventStore calendarWithIdentifier:identifier];
}
答案 0 :(得分:0)
我不确定您是否已完全使用EKCalendar,但您无需在iOS中制作日历。您可以使用动态布局的UICollectionView或Buttons设计自己想要的。重要的是确保所有日期都正确安排,这不一定是微不足道的。但是,如果你有一个很好的方法来获得某个月第一天的第一个工作日,你就可以完成它。我遵循这个算法:http://en.wikipedia.org/wiki/Determination_of_the_day_of_the_week这似乎有点复杂,但在实践中很容易编码和可靠。否则我相信苹果有一个第一个周末'您可以尝试的方法/属性,但这对我没用。一旦你有了正确的第一个工作日,你就可以计算一个月剩余时间的日子,并在日历上按照你想要的方式。
您似乎不确定如何使用EKCalendar设置日历数据。我找到了一个很有用的教程: http://oleb.net/blog/2012/05/creating-and-deleting-calendars-in-ios/
有关更具体的问题,请参阅文档,您可以通过Google搜索找到它。
否则,您正在寻找什么样的数据导出? icloud的?本地?您是使用提供的实际日历还是只保存包含其他应用程序可以读取的所有日历数据的内容?
答案 1 :(得分:0)
解决此问题的一种可能方法是,日历源类型不匹配。
由于您已使用本地来源类型创建了日历,因此如果您已同步iCloud / gmail / exchange日历,则系统无法找到本地来源。
所以我的建议是不要使用本地来源,并尝试在任何可用的来源中创建日历。如果您采用这种方法,您也可以为解决相应的问题做好准备(例如iCloud已同步,但用户未获得iCloud日历同步的许可)。