2

私のアプリケーションには がありpresentViewController、その中にポップオーバーを開くボタンがあります。このポップオーバーには、このポップオーバーのデータを保存するための barButtonItem があります。ユーザーがポップオーバーの外をタップしたときに、データも保存できるようにしたいと思います。popoverControllerDidDismissPopoverビューでメソッドを使用しようとしましたpresentViewController。デリゲートがありますが、ポップオーバーの外側をタップすると、このメソッドは呼び出されません。

私に何ができる?

ありがとう!!

4

6 に答える 6

5

popOver を追加する際に、次のコード行を追加します。

 popover.delegate = self;

また、popOver CONtroller を提示する .h ファイルに popOverDelegate を登録します。

@interface yourViewController : UIViewController<UIPopoverControllerDelegate>
于 2012-09-04T09:35:44.893 に答える
3

あなたはおそらくすでにそれを解決しましたが、私はちょうど同じ問題に直面しました。UIPopoverControllerViewcontroller でのインスタンスを保持していて、次のようにしました。

self.popover.delegate = self;
self.popover = [[UIPopoverController alloc] initWithContentViewController:wgtvc];

もちろん、これは機能しません。これはUIPopoverController、デリゲートの設定をオーバーライドする AFTER 設定を初期化しているためです。したがって、正しい方法は、最初に UIPopovercontroller を初期化し、次にデリゲートを設定することです

self.popover = [[UIPopoverController alloc] initWithContentViewController:wgtvc];
self.popover.delegate = self;

どこかを再初期化している可能性がありますUIPopoverController-再初期化後にデリゲートを再度設定してください。

于 2013-04-04T13:18:48.303 に答える
1

私はこの質問が古いことを知っていますが、うまくいけば誰かがそこに役立つことを願っています...

問題は、ポップオーバー コントローラーの初期化にあります。ストーリーボードでポップオーバー セグエを確立した場合、デリゲートが閉じられたときに呼び出されるようにするには、このポップオーバーへの参照が必要です。

セグエメソッドの準備で:

それ以外の:

    self.popoverController = [[UIPopoverController alloc]initWithContentViewController:segue.destinationViewController];
    self.popoverController.delegate = self;

必要なもの:

   self.popoverController = [(UIStoryboardPopoverSegue *)segue popoverController];
    self.popoverController.delegate = self;

次に、いつポップオーバーが表示されるかを正しく処理するようにしてください

  • (BOOL)shouldPerformSegueWithIdentifier:(NSString *)識別子送信者:(id)送信者
于 2013-08-28T15:03:03.530 に答える