2012-03-29 74 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

相關問題