Обеспечение интерфейсов для событий

Набор События платформа UI обеспечивает два типа контроллеров представления для управления событиями:

Отображение данных о событии

Использовать EKEventViewController класс, у Вас должно быть существующее событие, которое Вы получили из хранилища события. Необходимо установить event свойство и любые другие параметры экрана прежде, чем представить этот тип контроллера представления. Перечисление 6-1 показывает, как создать контроллер представления события и добавить его к контроллеру навигации, приняв myEvent уже существует. Если Вы не позволяете пользователю редактировать событие, установите allowsEditing свойство к NO.

Перечисление 6-1  Редактируя существующее событие

EKEventViewController *eventViewController = [[EKEventViewController alloc] init];
eventViewController.event = myEvent;
eventViewController.allowsEditing = YES;
navigationController = [[UINavigationController alloc] initWithRootViewController:eventViewController];

Когда пользователь заканчивает просматривать событие, необходимо присвоить делегата в контроллере представления события для получения уведомления. Делегат соответствует EKEventViewDelegate протокол и должен реализовать eventViewController:didCompleteWithAction: метод.

Изменение данных о событии

Чтобы позволить пользователю создавать, отредактируйте, или удалите события, используйте EKEventEditViewController класс и EKEventEditViewDelegate протокол. Вы создаете контроллер представления редактирования события, подобный контроллеру представления события, кроме Вас должен установить eventStore свойство (устанавливающий event свойство является дополнительным).

Экземпляры EKEventEditViewController класс разработан, чтобы быть представленным модально, как показано в Перечислении 6-2. В этом фрагменте кода, self контроллер вида сверху контроллера навигации. Для получения дополнительной информации на модальных контроллерах представления, считайте Представление Контроллера Представления Модально.

Перечисление 6-2  , Представляющее событие, редактирует контроллер представления модально

EKEventEditViewController* controller = [[EKEventEditViewController alloc] init];
controller.eventStore = myEventStore;
controller.editViewDelegate = self;
[self presentModalViewController:controller animated:YES];

Когда пользователь заканчивает редактировать событие, необходимо также указать делегата для получения уведомления. Делегат соответствует EKEventEditViewDelegate протокол и должен реализовать eventEditViewController:didCompleteWithAction: метод для отклонения модального контроллера представления, как показано в Перечислении 6-3. В целом объект, представляющий контроллер представления модально, ответственен за отклонение его.

Перечисление 6-3  делегат отклоняет модальное представление

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

Делегат также передается меры, которые пользователь принял при окончании редактирования. Пользователь может или отменить изменения, сохранить событие или удалить событие. Если необходимо выполнить больше кода после того, как пользователь отклонит модальное представление, реализация eventEditViewController:didCompleteWithAction: метод делегата.