1

私は iOS5 で EKEvent に取り組んでいます。イベントの追加、削除、一覧表示はできますが、既存のイベントを編集しようとすると、[完了] ボタンで問題が発生します。eventEditViewController: メソッド内には入りません。何が問題なのですか?どんな助けでも大歓迎です。キャンセルと削除ボタンが機能しています。イベントを編集して [完了] をクリックすると、コンソールに が表示されます
Calendar: unable to save: (null)

これが私が試したコードです..

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    EKEventEditViewController* eventViewController = [[EKEventEditViewController alloc] init];
    event = [self.events objectAtIndex:indexPath.row];

    eventViewController.event = event;
    eventViewController.editViewDelegate = self;
    [self presentModalViewController: eventViewController animated:YES];
    [eventViewController release];
}

-(void)eventEditViewController:(EKEventEditViewController *)controller
         didCompleteWithAction:(EKEventEditViewAction)action {
    EKEvent *thisEvent = controller.event;
    NSError *error;
    if ([controller.event.endDate isEqualToDate:controller.event.startDate]) {
        controller.event.endDate = [controller.event.startDate dateByAddingTimeInterval:1.0]; // add one second
    }
    switch (action) {
        case EKEventEditViewActionCancelled:
            // User tapped "cancel"
            NSLog(@"Canceled");
            break;
        case EKEventEditViewActionSaved:
            NSLog(@"Saved");
            [controller.eventStore saveEvent:controller.event span: EKSpanFutureEvents error:&error];
            break;
        case EKEventEditViewActionDeleted:
            // User tapped "delete"
            NSLog(@"Deleted");
            // delete the event from event list
            [self.events removeObject:thisEvent];
            // delete the event from event store
            [self.eventStore removeEvent:thisEvent span:EKSpanThisEvent error:nil];
            // reload the tableView
            [self.tableOutlet reloadData];
            break;
        default:
                NSLog(@"Default");
            break;
    }

    [self dismissModalViewControllerAnimated:YES];

}
4

2 に答える 2

7

ドキュメントによると、

イベントストア

ビューを表示する前に、このプロパティを設定する必要があります。

そう、

eventViewController.eventStore = <your event store>;
eventViewController.editViewDelegate = self;

[self presentModalViewController: eventViewController
                        animated: YES];
于 2012-08-15T09:34:32.277 に答える
2

同じ問題がありました。問題は、私が定義した場所でしたeventStore-おそらく、を提示するeventViewControllerと、Calendar プロパティさえ表示されません。

AppDelegate

  __eventStore = [[EKEventStore alloc] init];

あなたのクラスで(私はこれを入れましたviewDidLoad):

if (self.eventStore == Nil){
    id appDelegate = (id)[[UIApplication sharedApplication] delegate]; 
    self.eventStore = [appDelegate eventStore];   
}

最後にdidSelectRowAtIndexPath、ビューを表示する前にこれを入れます

eventViewController.eventStore = [self eventStore]; 
于 2012-07-10T19:11:28.890 に答える