Обеспечение интерфейсов для событий
Набор События платформа UI обеспечивает два типа контроллеров представления для управления событиями:
EKEventViewController
: используйте этот класс, если у Вас есть существующее событие, Вы хотите вывести на экран.EKEventEditViewController
: используйте этот класс, чтобы позволить пользователю создавать, редактировать, или удалять события.
Отображение данных о событии
Использовать 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
свойство является дополнительным).
Если
event
свойствоnil
когда Вы представляете контроллер представления, пользователь создает новое событие в календаре по умолчанию и сохраняет его к указанному хранилищу события.Если
event
свойство неnil
, пользователь редактирует существующее событие. Событие должно находиться в указанном хранилище события — иначе, исключение повышено.
Экземпляры 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:
метод делегата.