Я хочу, чтобы вы помогли моим друзьям. Разрабатываю универсальное приложение для iphone / ipad. Я хочу добавить несколько событий, выбранных пользователем (это может быть 1-50 событий). Это приложение добавит события в календарь iphone. События и даты событий могут отличаться. Как добавить несколько событий в календарь без взаимодействия с пользователем? Я хорошо знаю, как добавить одно событие в календарь iphone / ipad, но не знаю, как добавить несколько событий? Пожалуйста, помогите мне друзья .. Я искал в гугле, но не получил ответа? Пожалуйста .. Спасибо заранее.

Спасибо, что прочитал мой плохой английский.

Юва.М.

0
Yuvaraj.M 30 Авг 2011 в 13:30

2 ответа

Лучший ответ

Вероятно, вам нужно сохранить все объекты событий в массиве, затем перебрать его и добавить один за другим в календарь iPhone.

1
KingofBliss 30 Авг 2011 в 09:36
.h file

#import <EventKit/EventKit.h>
#import <EventKitUI/EventKitUI.h>


// EKEventStore instance associated with the current Calendar application
@property (nonatomic, strong) EKEventStore *eventStore;

// Default calendar associated with the above event store
@property (nonatomic, strong) EKCalendar *defaultCalendar;


.m file
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.


    // Calendar event has called
    self.eventStore = [[EKEventStore alloc] init];

    // Check access right for user's calendar
    [self checkEventStoreAccessForCalendar];

}// end viewDidLoad


- (BOOL) addAppointmentDateToCalender:(NSDate *) appointment_date {

    self.defaultCalendar = self.eventStore.defaultCalendarForNewEvents;

    EKEvent *event  = [EKEvent eventWithEventStore:eventStore];

    // Doctor Name
    NSString *doctorName  = [objSpineCustomProtocol getUserDefaults:@"doctorName"];

    // Title for the appointment on calender
    NSString *appointment_title = [NSString stringWithFormat:@"Appointment with Dr.%@", doctorName];

    event.title     = appointment_title;

    //[NSDate dateWithString:@"YYYY-MM-DD HH:MM:SS ±HHMM"], where -/+HHMM is the timezone offset.
    event.startDate = appointment_date;

    NSLog(@"Start date of appointment %@",event.startDate);

    NSDate *end_date_appointment = [[NSDate alloc] initWithTimeInterval:1800 sinceDate:appointment_date];
    event.endDate   = end_date_appointment;

    NSLog(@"End date of appointment %@",event.endDate);

    [event setCalendar:[eventStore defaultCalendarForNewEvents]];

    NSError *err;
    [eventStore saveEvent:event span:EKSpanThisEvent error:&err];

    return true;
}// end method add_appointment_date_to_calender


-(void)checkEventStoreAccessForCalendar {

    NSLog(@"Method: checkEventStoreAccessForCalendar");

    EKAuthorizationStatus status = [EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent];

    switch (status) {

            // Update our UI if the user has granted access to their Calendar
        case EKAuthorizationStatusAuthorized: [self accessGrantedForCalendar];
            break;
            // Prompt the user for access to Calendar if there is no definitive answer
        case EKAuthorizationStatusNotDetermined: [self requestCalendarAccess];
            break;
            // Display a message if the user has denied or restricted access to Calendar
        case EKAuthorizationStatusDenied:
        case EKAuthorizationStatusRestricted:
        {
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Privacy Warning" message:@"Permission was not granted for Calendar"
                                                           delegate:nil
                                                  cancelButtonTitle:@"OK"
                                                  otherButtonTitles:nil];
            [alert show];
        }
            break;
        default:
            break;
    }
}// end of emethod checkEventStoreAccessForCalendar

// Prompt the user for access to their Calendar
-(void)requestCalendarAccess
{

    [self.eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error)
     {

         if (granted)  {

              AppointmentViewController* __weak weakSelf = self;
             // Let's ensure that our code will be executed from the main queue
             dispatch_async(dispatch_get_main_queue(), ^{
                 // The user has granted access to their Calendar; let's populate our UI with all events occuring in the next 24 hours.
                 [weakSelf accessGrantedForCalendar];
             });
         }
     }];
}

// This method is called when the user has granted permission to Calendar
-(void)accessGrantedForCalendar
{
    NSLog(@"Method: accessGrantedForCalendar");
    // Let's get the default calendar associated with our event store
    self.defaultCalendar = self.eventStore.defaultCalendarForNewEvents;

}// end of method accessGrantedForCalendar
0
Vinod Joshi 11 Ноя 2013 в 11:28