EventKit и добавить событие в календарь из приложения - PullRequest
0 голосов
/ 25 января 2012

Я хочу спросить, что мне нужно добавить событие из моего приложения, и я выбираю дату из средства выбора даты и записываю событие в текстовое поле, и оно попадает в календарь, календарь iphone по умолчанию. Как я могу это сделать, это использовать Framework EventKit

я использую этот код, но не работает

- (void)viewDidLoad
{
    self.eventStore = [[EKEventStore alloc] init];

    self.eventsList = [[NSMutableArray alloc] initWithArray:0];

    // Get the default calendar from store.
    self.defaultCalendar = [self.eventStore defaultCalendarForNewEvents];

    // create an Add button
    UIBarButtonItem *addButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"bell.png" ] style:UIBarButtonItemStylePlain target:self action:@selector(addEvent:)];
    //UIBarButtonItem *addButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCompose target:self action:@selector(addEvent:)];
    self.navigationItem.rightBarButtonItem = addButtonItem;
    [addButtonItem release];

    [super viewDidLoad];
}

-(IBAction) addEvent:(id)sender 
{   
    self.eventStore = [[EKEventStore alloc] init];
    EKEvent *event = [EKEvent eventWithEventStore:eventStore];
    //  event.title =@"Whatever you want your title to be";
    event.title = @"a";

    //    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    event.allDay = YES;

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

    addController.editViewDelegate = self;
    [addController release];   
}

Ответы [ 2 ]

3 голосов
/ 25 января 2012

Сначала импортируйте фреймворки EventKitUI / EventKitUI.h, EventKit / EventKit.h в ваш заголовочный файл.Это код для добавления события в iCal по умолчанию (календарь iPhone).

-(IBAction) addEvent:(id)sender 
  { 
              EKEventStore *eventStore = [[[EKEventStore alloc] init] autorelease]; 
               EKEvent *events = [EKEvent eventWithEventStore:eventStore];

               events.title = @"Title";
                events.notes = @"Description";
                events.location = @"Location";
                events.startDate = [NSDate date];
                events.endDate = [NSDate date];
                events.availability = EKEventAvailabilityFree; 

                [events setCalendar:[eventStore defaultCalendarForNewEvents]];
                NSError *err;
                [eventStore saveEvent:events span:EKSpanThisEvent error:&err];
                 NSLog(@"Error From iCal : %@", [err description]);
    }

Затем используйте этот код для просмотра сохраненного события в EKEventEditViewController,

EKEventEditViewController *editViewController = [[EKEventEditViewController alloc] init];
        editViewController.editViewDelegate = self;
        editViewController.event = event3;
        editViewController.eventStore = eventStore1;
        [self presentModalViewController:editViewController animated:YES];

Я использовал этикод, и это работает для меня.Спасибо.

0 голосов
/ 25 января 2012

Реализуете ли вы метод -eventEditViewController:didCompleteWithAction:?

Если нет, сделайте что-то вроде следующего:

- (void)eventEditViewController:(EKEventEditViewController *)controller didCompleteWithAction:(EKEventEditViewAction)action {
    [self dismissModalViewControllerAnimated:YES];

    EKEventStore *eventStore = [[[EKEventStore alloc] init] autorelease];
    NSError *error = NULL;

    [eventStore saveEvent:controller.event span:EKSpanThisEvent error:&error];

    if (error != NULL)
        NSLog(@"%@",[error localizedDescription]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...