2012-03-31 4 views
0

私はpresenting.So私たちが生きてipad、barbuttonitemから提示されたPopoverを管理する方法は?

をそれを維持することへの参照を保持する必要があるとポップオーバーを提示しているbarbuttonitemを押すと、それは自動的にポップオーバーを却下しませんがUIPopovercontrollerが自分自身を保持しないことを知って、それを実際には、ボタンを押したときに別のポップオーバーが繰り返し表示され、ポップオーバーが既に存在するかどうかを確認するための特別な操作はありません。

私たちは、すべてのbarbuttonitemのポップオーバーを維持するために多くのプロパティを持つことができます知っているが、私は、これは醜いだと思う...

は、任意のより良い練習はありますか?

答えて

0

私はARCでポップオーバーを使用しており、参照カウントを維持するために特別な操作を行う必要はありません。ポップオーバーがオンスクリーンである限り、それを生かし続けるための強い参照があります。あなたが投稿できる失敗事例はありますか?

私が興味深いものを挙げると、barButtonItemを繰り返し押すと、ポップオーバーの複数のインスタンスが作成されます。彼らはお互いの上に積み重なるので、それらを見るのは難しいです。しかし、ポップアップの周りの影は、インスタンスが追加されるたびに暗くなります。問題への真のアドバイスは、すべてのインスタンスを別々に却下しなければならないということです。

解決策の1つは、UIBarButtonItemをポップアップの出入りの途中で無効/有効にすることです。これは私にとってはうまくいったが、少し面倒だった。 (私は2つの場所にコードを入れなければならなかった.1つは自分の解任者に、もう1つはpopoverControllerの代理人の - popoverControllerDidDismissPopover:メソッドで、ユーザーがポップオーバーの外にクリックしてそれを閉じた場合)。

私は(優秀)スタンフォードCS193Pコースでは、ポップアップが表示されている間にボタンを隠すことでこの問題に取り組んでいます。

実際、iOSの動作はバグのようです。 barButtonItemのクリックがのポップオーバーの外側にあるであり、barButtonItemのビューがポップオーバーのパススルー配列に含まれていない場合、(文書に従って)popoverを終了するはずです。しかし、Appleは私に尋ねなかった。

パススルー配列が最初はnilであることを確認したところ、その配列からbarButtonItemのビューを削除することはオプションではありません。 Drat。

+0

この関連の質問もご覧ください:http://stackoverflow.com/questions/2642405/dismissing-ipad-uipopovercontroller-when-barbuttonitem-is-pushed-while-its-open?rq=1 – jbbenni

関連する問題