2012-03-29 71 views
2

我已经想出了如何在我的iPhone应用程序中添加自定义日历,但我无法弄清楚如何将该日历添加到设备的日历中。该事件显示从应用程序内查看时的正确日历,但即使点击日历行中的某个事件,我的日历也不在列表中,如果要保持日历名称正确,我必须取消日历。有没有办法'订阅'我的本地创建的日历,以便我可以从设备上的日历应用程序中看到它(显然,我也希望它与用户的计算机同步等)。在iOS设备上访问以编程方式创建的日历

回答

6

它与iCloud有关。当iCloud打开时,具有本地源(EKSourceTypeLocal)的日历将被隐藏。

+0

JPK您好,我需要使用EKSourceTypeExchange在我的iOS应用程序,所以是有可能我的日历同步达到这是在iPhone或iPad上在设置 - >帐户部分我的Gmail帐户,如果是那么如何我可以解决它,,,我也想要所有我的Gmail帐户的日历事件我的iPhone日历(ical)..所以我怎么能做到这一点? – Apple 2013-07-03 13:40:56

1

今天我一直在为此苦苦挣扎,这一切似乎都归功于我(最终是最终用户)在设备上的日历设置。

就我个人而言,我将我的GMail日历同步到Exchange格式 - 这样做可以防止“本地”日历显示出来。

通过根据用户的设置操作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"); 
} 
+0

你好本,我需要在我的iOS应用程序中使用EKSourceTypeExchange,所以是否有可能将我的日历同步到我的gmail帐户,这是iPhone或iPad设置 - >帐户部分,如果是的话我该如何解决, ,,我也想把我所有的Gmail帐户的日历事件都放入我的iphone日历(ical)..所以我怎么做到这一点? – Apple 2013-07-03 13:36:32

相关问题