EKCalendarChooser новый календарь - PullRequest
0 голосов
/ 12 марта 2012

Можно ли показать возможность добавления новых календарей в EKCalendarChooser так же, как приложение iPhone Calendar по умолчанию показывает + в левом верхнем углу и позволяет вам определять свои календари?

Ответы [ 2 ]

2 голосов
/ 01 августа 2014

После долгих проб и ошибок, Я наконец получил это:

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: пожалуйста, сделайте нам одолжение и обновите документацию, чтобы сделать нашу жизнь проще

1 голос
/ 04 июля 2012

Я искал одно и то же готовое к использованию решение почти сутки, и пока не повезло.

Хорошо, однако, что вы можете позвонить

[yourEKCalendarChooserInstance setEditing:YES];

И он покажет вам строку «Добавить календарь»

Но плохо, что ничего не происходит при нажатии / выборе. Это все, что я узнал до сих пор

UPDATE:

этот код работал для меня (пока тестировал только на симуляторе):

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];

Кроме того, вам, конечно же, потребуется предоставить делегат для кнопок «Готово / Отмена».

...