2011-01-21 85 views
5

我沒有得到對我的eventViewController:didCompleteWithAction的調用:當EKEventViewController完成編輯事件時。EKEventViewDelegate didCompleteWithAction沒有被調用

以下是我設置它:


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

我有我的類協議和方法是通過複製實現並粘貼在文檔的定義。它只是不會被調用。

如果我使用EKEventEditViewController及其相應的委託,那麼在事件保存時確實會調用它。

我也能夠在SimpleEKDemo代碼中重現問題。有誰知道什麼可能是錯的?

我可以放棄視圖功能,直接進入EKEventEditViewController,但我寧願不要。

+0

我得到相同的行爲。委託在事件被刪除時被調用,但不被編輯時被調用。我正在將EKEventViewController作爲常規VC(即,不是模態)推送到我的導航控制器堆棧中。你如何呈現它? – 2011-02-04 17:38:30

+0

如上面的代碼所示。我把它推到堆棧上。 – Rob 2011-02-07 19:12:25

回答

1

在這個.m文件中,您需要導入EventKit/EventKit.h和EventKitUI/EventKitUI.h 以及需要實現'EKEventViewDelegate'委託的.h文件。

希望它可以幫助你

+0

我有這些。但是,我只注意到,當我接受或拒絕了一個事件邀請時,該代表確實接到了電話。如果我從EKEventViewController中編輯本地創建的事件,我只是不會被調用 – Rob 2011-01-26 04:09:37

4

可能是有點晚了是有幫助的,但我有這個問題爲好。

要解決它,我子類EKEventViewController,然後在子類viewDidLoad我取代了標準的編輯按鈕,用我自己的一個:


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

    self.navigationItem.rightBarButtonItem = editItem; 
} 


當你想編輯這樣事件,您可以設置您自己的EKEventEditViewController並指定其代表以便響應更改:


- (void)editCalEvent { 

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

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

    [self presentModalViewController:editController animated:YES]; 

    [editController release]; 

} 


希望有所幫助。

2

我有類似的問題,當我使用「pushViewController」,其結果是,它會去

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

但之後我改變presentModalViewController,它會去eventViewController:didCompleteWithAction:完成時/取消/刪除是按下。

0

這似乎在圖書館中是一個相當明顯的遺漏。我的解決方法:我在UINavigationController中呈現EKEventViewController。我在控制器的viewWillAppear方法中檢測到完成,而不是將EKEventViewController推入視圖堆棧。在此視圖控制器中使用布爾變量來跟蹤和區分由於彈出EKEventViewController而導致的初始外觀和重新出現。在其他時候你的代碼有被調用的風險,但如果你只是刷新tableview等,那麼這應該是足夠的。