Можно ли показать возможность добавления новых календарей в EKCalendarChooser так же, как приложение iPhone Calendar по умолчанию показывает + в верхнем левом углу и позволяет вам определять свои календари?
EKCalendarВыберите новый календарь
Ответы (2)
Я искал одно и то же готовое решение почти день, и пока безуспешно.
Хорошо, однако, что вы можете позвонить
[yourEKCalendarChooserInstance setEditing:YES];
И он покажет вам строку «Добавить календарь».
Но плохо то, что при клике/выборе ничего не происходит. Это пока все, что я узнал
ОБНОВИТЬ:
этот код работал у меня (пока тестировался только на симуляторе):
EKEventStore *store = [[[EKEventStore alloc] init] autorelease];
EKCalendarChooser *chooser = [[EKCalendarChooser alloc] initWithStyle:EKCalendarChooserSelectionStyleSingle displayStyle:EKCalendarChooserDisplayWritableCalendarsOnly eventStore:store];
[chooser setEditing:YES];
[chooser setShowsDoneButton:YES];
[chooser setShowsCancelButton:YES];
UINavigationController *modalController = [[UINavigationController alloc] initWithRootViewController:chooser];
[self presentViewController:modalController animated:YES completion:nil];
Кроме того, конечно, вам нужно будет предоставить делегат для кнопок «Готово/Отмена».
person
Community
schedule
04.07.2012
Я не согласен с тем, что это сообщение помечено как ответ. Это не дает решения. На самом деле кнопки
Done
и Cancel
даже не появляются, когда EKCalendarChooser
находится в режиме редактирования. Единственный способ добиться этого — загрузить два отдельных экземпляра EKCalendarChooser, один для редактирования и один для выбора.
- person KaosXIV; 27.11.2013
После долгих проб и ошибок я наконец получил это:
var calendarChooser: EKCalendarChooser!
var navController: UINavigationController!
func setup () {
calendarChooser = EKCalendarChooser(
selectionStyle: EKCalendarChooserSelectionStyleMultiple,
displayStyle: EKCalendarChooserDisplayAllCalendars,
entityType: EKEntityTypeEvent,
eventStore: zeitplanController.cache.eventStore)
// DON'T DO THE FOLLOWING:
// calendarChooser.editing = false
navController = UINavigationController(rootViewController: calendarChooser)
calendarChooser.navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Edit, target: self, action: "startEditing")
}
func startEdit () {
calendarChooser.editing = true
calendarChooser.navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Done, target: self, action: "endEdit") }
func endEdit () {
calendarChooser.editing = false
calendarChooser.navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Edit, target: self, action: "startEdit")
}
Это, помещенное в UIPopoverController, показывает стандартный диалог выбора календаря, включая функции редактирования, как в исходном приложении календаря.
@Apple: пожалуйста, сделайте нам одолжение и обновите документацию, чтобы сделать нашу жизнь проще.
person
heiko
schedule
01.08.2014
Странный. Методы EKCalendarChooserDelegate вызываются, но selectedCalendars пусты. Похоже, вы пытаетесь продублировать при настройке этих кнопок то, что в документах говорится, что метод делегата уже делает. Я что-то упускаю?
- person Victor Engel; 14.10.2017