2011-01-21 21 views
5

EventViewController: didCompleteWithAction öğesine çağrı alamıyorum: EKEventViewController bir olayı düzenleme işlemini tamamladığında.EKEventViewDelegate didCompleteWithAction çağrılmadı

İşte ben ayarladım açıklanmıştır:


- (void)showCalendar:(id)sender { 
    EKEventViewController *eventViewController = [[EKEventViewController alloc] init]; 

    eventViewController.delegate = self; 

    eventViewController.event = self.event; 

    // Allow event editing. 
    eventViewController.allowsEditing = YES; 

    [self.navigationController pushViewController:eventViewController animated:YES]; 
    [eventViewController release]; 
} 

benim sınıfına protokol var ve yöntem kopya ile uygular ve dokümanlardan tanımını yapıştırarak. Sadece çağrılmadı.

EKEventEditViewController ve onun ilgili temsilcisini kullanırsam, olay kaydedildiğinde bu çağrılır.

Sorunu SimpleEKDemo kodunda da aynı şekilde yeniden üretmeyi başardım. Neyin yanlış olabileceğini bilen var mı?

Görünüm işlevini bırakabilir ve doğrudan EKEventEditViewController öğesine gidebilirim, ancak tercih etmemeyi tercih ederim.

+0

Aynı davranışı alıyorum. Temsilci, etkinlik silindiğinde çağrılır, ancak düzenlendiğinde değil. EKEventViewController'ı navigasyon kontrol cihazımın üzerine düzenli bir VC (yani moda olarak değil) olarak yerleştiriyorum. Nasıl sunuluyor? –

+0

Yukarıdaki kodda gösterildiği gibi. Onu yığının üstüne itiyorum. – Rob

cevap

1

bu .m dosyasında, EventKit/EventKit.h ve EventKitUI/EventKitUI.h öğelerini içe aktarmanız ve .H dosyasında 'EKEventViewDelegate' delegelerini uygulamanız gerekir.

Eğer

+0

Bende vardı.Ancak, bir etkinlik davetini kabul ettiğimde veya reddettiğimde, temsilci arandığını fark ettim. Yerel olarak oluşturulan bir olayı EKEventViewController – Rob

4

yardımcı olmak için biraz geç olabilirdi yardımcı olur, ama aynı zamanda bu sorunu vardı.


- (void)viewDidLoad { 
    [super viewDidLoad]; 
    UIBarButtonItem *editItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self.delegate action:@selector(editCalEvent)]; 

    self.navigationItem.rightBarButtonItem = editItem; 
} 


Bir düzenlemek istediğiniz Yani yol:

Ben EKEventViewController sınıflandırma etrafında almak için, daha sonra alt sınıf viewDidLoad yılında ben kendi biriyle standart düzenle düğmesine yerini olayı, kendi EKEventEditViewController'u kurabilir ve değişikliklere yanıt vermek için temsilcisini belirtebilirsiniz:


- (void)editCalEvent { 

    EKEventEditViewController *editController = [[EKEventEditViewController alloc] init]; 

    editController.event = editingEvent; 
    editController.eventStore = self.eventStore; 
    editController.editViewDelegate = self; 

    [self presentModalViewController:editController animated:YES]; 

    [editController release]; 

} 

Bu yardımcı olur umarım. Ben "pushViewController" kullandığınızda
2

Ben benzer bir sorun vardı, sonuç Bitti zaman vardır Sil/İptal/o

- (void)navigationController:(UINavigationController *)navigationController 
    willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{} 

gidecek Ama presentModalViewController değişti sonra, eventViewController:didCompleteWithAction: gidecek olmasıdır bastırdı.

+0

içinden düzenlediğimde iPad ile benzer bir soruna rastladım. Başlangıçta modal bir popoda yer almaya çalıştı ve geri aramalar almadı. PresentModalViewController kullanmaya geçti ve hepsi iyi. – RunningPink

0

Kitaplıkta bu oldukça açık bir eksiklik gibi görünüyor. Benim geçici çözüm: BirEINavigationController içinde EKEventViewController sunumu. Denetleyicinin viewWillAppear yönteminde tamamlamayı EKEventViewController'ı görünüm yığınının üzerine ittiğimden tespit ediyorum. Atılan EKEventViewController nedeniyle ilk görünüm ve yeniden görünüm arasında izlemek ve ayırt etmek için bu görünüm denetleyicisindeki bir boole değişkeni kullanın. Kodunuzun başka zamanlarda çağrılması riski vardır, ancak sadece tablo görüntülerini, vb. Yeniliyorsanız, bu yeterli olmalıdır.

İlgili konular