5

EKEventViewController がイベントの編集を終了したときに、eventViewController: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 に直接移動することもできますが、そうはしません。

4

4 に答える 4

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

}


それが役立つことを願っています。

于 2011-03-12T05:31:37.607 に答える
2

「pushViewController」を使用すると、同様の問題が発生しました。その結果、

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

に変更した後は、Done/Cancel/Delete を押すpresentModalViewControllerと に移動します。eventViewController:didCompleteWithAction:

于 2012-02-20T06:03:35.910 に答える
1

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

それがあなたを助けることを願っています

于 2011-01-25T08:27:36.453 に答える
0

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

于 2015-01-13T17:20:40.530 に答える