2011-06-22 4 views
1

私はUIViewに複数のpopovercontrollerを持っています。 popoverControllerDidDismissPopoverメソッドを1回のポップオーバーで呼び出せますが、すべてのpopovercontrollersで同じ処理を行うことはできません。objective-c複数のpopoverviewcontroller

誰でも私に提案することができます、どのように私はこれを達成することができますか?

答えて

0

あなたは電話することができますか? UIPopoverControllerをサブクラス化してメソッドを自分で呼び出しましたか?

"私のポップオーバーが解雇されたときに呼び出されない"という意味ならば、より多くの情報が必要です。これは特定の状況では特定の動作です。

dismissPopoverAnimated:メソッドへのプログラムによる呼び出しに応答して、このメソッドを呼び出すことはありません。プログラムによってポップオーバーを解除する場合は、dismissPopoverAnimated:メソッドを呼び出した直後にクリーンアップアクションを実行する必要があります。

複数のポップオーバーがあり、どちらが解消されたのかを知りたい場合は、メソッド自体で比較を行う必要があります。あなたのコメントに基づいて

EDIT:

方法は常にpopoverControllerDidDismissPopover:(UIPopoverController *)popoverControllerと呼ばれます。このメソッドは、のpopoverによってトリガされ、ユーザによって破棄されます。異なるファイナライズを必要とする2つの異なるpopoversがある場合、この方法でそれらを区別する必要があります。これは、popoversがselfを自分自身へのポインタとするパラメータを持つ理由です。

あなたの方法は次のようになります。

popoverControllerDidDismissPopover:(UIPopoverController *)popoverController 
{ 
    if (popoverController == myFirstPopoverController) 
    { 
     //do something 
    } 

    if (popoverController == mySecondPopoverController) 
    { 
     //do something else 
    } 
} 
+0

私は2つのインスタンスPopoverViewControllerの(firstPopoverとsecondpopover)を持っています。 firstPopoverとsecondpopoverが解除されたときにいくつかのアクションを実行する必要があります。 PopoverViewControllerのpopoverという名前のインスタンスを作成した場合、 - (void)popoverControllerDidDismissControllerは動作しますが、 - (void)firstPopoverControllerDidDismissControllerは機能しません。 –

+0

私はurで提案されたコードを試しましたが、制御がpopoverControllerDidDismissPopoverメソッドにまったく来ていません。 –

+0

私は(「第二ポップオーバーが解雇」@)のNSLog(「最初ポップオーバーは却下」@)のNSLog行っておりますのNSLog(@「第三のポップオーバーは却下」)ポップオーバーは、あなたがpopoversの代理人としてあなたのViewControllerを設定している@krishna –

関連する問題