2016-11-10 2 views
0

Возможно ли перенаправить пользователя в приложение «Календарь» нового события с программным обеспечением с заполненными датами начала и окончания? Я знаю Introduction to Calendars and Reminders, но это кажется излишним. Я также пробовал calshow://, но, похоже, не работал, или я не мог найти правильную схему.iOS: открыть приложение «Календарь» Новое окно события с заполненной датой

+0

Да, это может произойти, вы можете перенаправить его. –

+0

@NarendraPandey не могли бы вы продумать, как? –

ответ

3
@import EventKit; 
@import EventKitUI; 

затем представить eventkit с помощью этого:

- (IBAction)ScheduleClicked:(id)sender { 

EKEventStore *eventStore = [[EKEventStore alloc]init]; 
if([eventStore respondsToSelector:@selector(requestAccessToEntityType:completion:)]) { 
    [eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted,NSError* error){ 
     if(!granted){ 
     NSString *message = @"Hey! This Project Can't access your Calendar... check your privacy settings to let it in!"; 
     dispatch_async(dispatch_get_main_queue(), ^{ 

    // Present alert for warning. 
      }); 
     }else{ 

      EKEventEditViewController *addController = [[EKEventEditViewController alloc] initWithNibName:nil bundle:nil]; 
      addController.event = [self createEvent:eventStore]; 
      addController.eventStore = eventStore; 

      [self presentViewController:addController animated:YES completion:nil]; 
      addController.editViewDelegate = self; 
      } 
    }]; 
    } 
} 

Между тем некоторые делегаты для придания детали конечной даты дата начала календаря.

#pragma mark - eventEditDelegates - 
- (void)eventEditViewController:(EKEventEditViewController *)controller didCompleteWithAction:(EKEventEditViewAction)action{ 
    if (action ==EKEventEditViewActionCanceled) { 
     [self dismissViewControllerAnimated:YES completion:nil]; 
    } 
    if (action==EKEventEditViewActionSaved) { 
     [self dismissViewControllerAnimated:YES completion:nil]; 
    } 
} 


#pragma mark - createEvent - 
-(EKEvent*)createEvent:(EKEventStore*)eventStore{ 
    EKEvent *event = [EKEvent eventWithEventStore:eventStore]; 
    event.title = @"New Event"; 

    event.startDate = @"Your start date"; 
    event.endDate = @"Your end date"; 

    [email protected]"Location"; 
    event.allDay = YES; 
    event.notes [email protected]"Event description"; 

    NSString* calendarName = @"Calendar"; 
    EKCalendar* calendar; 
    EKSource* localSource; 
    for (EKSource *source in eventStore.sources){ 
     if (source.sourceType == EKSourceTypeCalDAV && 
      [source.title isEqualToString:@"iCloud"]){ 
      localSource = source; 
      break; 
     } 
    } 
    if (localSource == nil){ 
     for (EKSource *source in eventStore.sources){ 
      if (source.sourceType == EKSourceTypeLocal){ 
       localSource = source; 
       break; 
      } 
     } 
    } 
    calendar = [EKCalendar calendarForEntityType:EKEntityTypeEvent eventStore:eventStore]; 
    calendar.source = localSource; 
    calendar.title = calendarName; 
    NSError* error; 
    [eventStore saveCalendar:calendar commit:YES error:&error]; 
    return event; 
} 

Это CreateEvent создаст новый календарь

Позвольте мне знать, если у вас есть какие-либо другие вопросы.

+0

Я заявлял, что я не забочусь о создании события программно, просто о перенаправлении на экран «Календарь событий нового события» с предварительно заполненными значениями –

+0

вы можете перенаправить EKEventEditViewController, который является экраном вашего события –

+0

, и то же самое, что я сделал, проверьте выше код. вы можете ввести экран событий с предварительно заполненными значениями в этом делетете - (EKEvent *) createEvent: (EKEventStore *) eventStore { –