2012-03-29 19 views
2

iPhoneアプリ内にカスタムカレンダーを追加する方法を知りましたが、そのカレンダーをデバイスのカレンダーに追加する方法がわかりません。このイベントは、アプリ内から見たときに正しいカレンダーを表示しますが、予定のカレンダー行をタップしても、カレンダーはリストにはなく、カレンダー名を正しく保持するにはキャンセルする必要があります。自分のローカルに作成されたカレンダーに「購読する」方法があるので、デバイス上のカレンダーアプリから見ることができます(明らかに、ユーザーのコンピュータなどと同期することもできます)。iOSデバイスでプログラムで作成されたカレンダーにアクセスする

答えて

6

iCloudと関係があります。 iCloudがオンの場合、ローカルのソース(EKSourceTypeLocal)を持つカレンダーは非表示になります。

+0

こんにちはJPKは、私はiPadのiPhoneまたはで[設定]> [アカウント]セクションにあるGmailアカウントに自分のカレンダーを同期することも可能であるし、YESの場合、どのようにすれば、私のiOSアプリでEKSourceTypeExchangeを使用する必要があります私はそれを解決することができます,,,私はまた、私のiPhoneのカレンダー(ical)にすべての私のGmailアカウントのカレンダーのイベントをretriveしたい..どのように私はこれを行うことができますか? – Apple

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を使用する必要がありますので、iPhoneまたはiPadの設定 - >アカウントセクションにある私のカレンダーを私のGmailアカウントに同期することが可能です。私のiPhoneのカレンダー(ical)にすべての私のGmailアカウントのカレンダーのイベントを取得したいと思う..どのように私はこれを行うことができますか? – Apple

関連する問題