Создание события календаря с помощью сигнала тревоги с помощью EKEventEditViewController

Я использую следующий код для создания события и отображаю всплывающее окно с просьбой сохранить событие:

EKEventStore *eventStore = [[EKEventStore alloc] init]; EKCalendar *calendar = [eventStore defaultCalendarForNewEvents]; EKEvent *event = [EKEvent eventWithEventStore:eventStore]; event.calendar = calendar; event.title = [NSString stringWithFormat:@"Event: %@", [self.event title]]; event.location = self.event.location; event.notes = [self stringByStrippingHTML: [self.event description]]; event.startDate = [self.event startDate]; event.endDate = [self.event endDate]; NSTimeInterval alarmOffset = -1*60*60;//1 hour EKAlarm *alarm = [EKAlarm alarmWithRelativeOffset:alarmOffset]; [event addAlarm:alarm]; EKEventEditViewController *eventViewController = [[EKEventEditViewController alloc] init]; eventViewController.event = event; eventViewController.eventStore=eventStore; eventViewController.editViewDelegate = self; [self.navigationController presentModalViewController:eventViewController animated:YES]; 

Это отлично работает, за исключением того, что свойство тревоги события не устанавливается, как вы можете видеть из изображения ниже:

Тревога не установлена

Если я сохраню событие перед отображением контроллера вида, он получит установленный будильник.

Обратите внимание, что я использую компилятор LLVM, поэтому не беспокойтесь о том, чтобы не выпускать материал!

Ta

Росс

    Наконец выяснили, как это сделать.

    Ваш контроллер должен будет реализовать протокол UINavigationControllerDelegate и установить делегат EKEventEditViewController для себя. Затем просто выполните

    navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated

    и добавьте там будильник.

    Вот моя реализация.

     - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { if ([navigationController isKindOfClass:[EKEventEditViewController class]]) { EKEventEditViewController *ek = (EKEventEditViewController*)navigationController; EKEvent *event = ek.event; // set alarm to 15 mins prior of the event if it starts later than 15 mins out if ([event.startDate compare:[[NSDate date] dateByAddingTimeInterval:60*15]] != NSOrderedAscending) { EKAlarm *alarm = [EKAlarm alarmWithRelativeOffset:60*15*-1]; event.alarms = [NSArray arrayWithObject:alarm]; } } } 
     NSTimeInterval alarmOffset = -1*60*60;//1 hour EKAlarm *alarm = [EKAlarm alarmWithRelativeOffset:alarmOffset]; [event addAlarm:alarm]; 

    Напишите вышеприведенный код после представления контроллера, т. Е. После строки

     [self.navigationController presentModalViewController:eventViewController animated:YES]; 
    Interesting Posts

    половина слова происходит в следующей строке, созданной с помощью nsmutableattributedstring

    Как асинхронно загружать изображение в UIImageView?

    Получение текста из TextView в теге UI в XCTest

    Создание видео из массива UIImage с различными анимациями перехода

    Что должен включать файл gitignore Xcode 6?

    Как определить высоту UICollectionView с FlowLayout

    TwebBrowser Zoom / Gesture не работает для firemonkey / iOs в XE4 при открытии pdf-файла

    iOS перебирает свойства объекта и добавляет действия

    Ручная установка корпоративного приложения iOS без предупреждения «Без надежного разработчика» (внутреннее распространение)

    Размер прокрутки не соответствует экрану устройства в xcode

    Цель-C: анимация в блоках

    iBeacon: didRangeBeacons перестает звонить, необходимо перезагрузить устройство, чтобы он снова работал

    Автомаркет: Xcode 6: Центрирование элементов пользовательского интерфейса

    Недопустимый параметр: nibNameMap! = Nil

    Hashchange вызывает приложение phonegap для сбоя?

    Давайте будем гением компьютера.