【问题标题】:eventkit and add event into calender from appeventkit 并从应用程序将事件添加到日历中
【发布时间】:2012-01-25 06:55:55
【问题描述】:

我想问我需要从我的应用程序中添加事件,我从日期选择器中选择日期并在文本框中写入事件,它在日历中命中,iphone 的默认日历我怎么能这样做 是使用框架事件包

我使用此代码但无法正常工作

- (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];   
}

【问题讨论】:

    标签: iphone objective-c ios


    【解决方案1】:

    首先在你的头文件中导入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];
    

    我已经使用了这些代码,它对我有用。谢谢。

    【讨论】:

      【解决方案2】:

      你实现-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]);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多