2011-01-21 4 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(つまりモーダルではない)としてプッシュしています。どのようにそれを提示していますか? –

+0

上記のコードに示すとおり。私はそれをスタックにプッシュしています。 – Rob

答えて

1

この.mファイルでは、EventKit/EventKit.hとEventKitUI/EventKitUI.h をインポートし、.hファイルで 'EKEventViewDelegate'デリゲートを実装する必要があります。

は、それはあなた

+0

私はそれらを持っていました。しかし、イベントの招待を受け入れるか拒否したときに、代議員が呼び出されたことに気付きました。私はEKEventViewController内からローカルに作成されたイベントを編集すると呼び出されません – Rob

4

が有用であることが少し遅くなるかもしれません役に立てば幸い、私もこの問題を抱えていました。編集したいとき


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

    self.navigationItem.rightBarButtonItem = editItem; 
} 


そのように:私は、サブクラスviewDidLoadに私は自分の一つで、標準的な編集ボタンを置き換え、EKEventViewControllerをサブクラス化し、それを回避するために

イベントには、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

私はiPadで同様の問題に遭遇しました。最初はモーダルポップオーバーに配置しようとし、コールバックを受け取りませんでした。 presentModalViewControllerを使用するように切り替えられ、すべて正常です。 – RunningPink

0

これは、図書館では明らかに省略されているようです。私の回避策:私はEKEventViewControllerをUINavigationControllerに提示しています。コントローラのviewWillAppearメソッドで完了が検出されたのは、EKEventViewControllerをビュースタックにプッシュした場合だけでした。このビューコントローラでブール変数を使用すると、EKEventViewControllerがポップされるために最初の外観と再表示を追跡して区別することができます。他の時にあなたのコードが呼び出される危険性がありますが、テーブルビューなどをリフレッシュするだけであれば十分です。

関連する問題