複数のポップオーバーを表示できるビューコントローラーがあります。同時にではありません。でどのポップオーバーが閉じられているかを知る最良の方法はどれpopoverControllerDidDismissPopover
ですか?
閉じられているポップオーバーに関して、さまざまなアクションを実行する必要があります。
どうもありがとう
複数のポップオーバーを表示できるビューコントローラーがあります。同時にではありません。でどのポップオーバーが閉じられているかを知る最良の方法はどれpopoverControllerDidDismissPopover
ですか?
閉じられているポップオーバーに関して、さまざまなアクションを実行する必要があります。
どうもありがとう
このようなものがうまくいくはずです。(このコードは完全ではありません。基本的なメモリやクラス管理などはご存知だと思いますので、実際の問題に焦点を当てます)
クラスでは、作成した popovercontrollers への参照を保存するためにいくつかの ivar を保持します
@interface MyClass : NSObject <UIPopoverControllerDelegate> {
UIPopoverController *popover1;
UIPopoverComtroller *popover2;
}
いつものように popovercontrollers を初期化し、それぞれへの参照を popover1 と popover2 に保存します。
次に、UIPopoverDelegate プロトコルの実装で:
- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController {
if(popoverController == popover1) {
//popover1 was dismissed
} else if (popoverController == popover2) {
//popover2 was dismissed
}
}
編集: コメントを見ると、popovercontroller を 1 つだけ使用し、そのコンテンツ ビューを別の UIViewControllers に置き換えていることを意味しているようです。
この場合、アプリケーションの状態に影響を与えるような方法で、特定の UIViewController 内にあるアクションを実行することをお勧めします。
次に、ポップオーバーが閉じられたら、元のビューを新しく更新された状態で再読み込みします。
または、代わりに UIPopoverController の 2 つの異なるインスタンスを使用するように変更します。
これは、Xcode 6.3 beta 3 の Swift で、Objective-Cでも同様である必要がある方法です。
提示されたビューにはViewController
、それ自体が含まれている必要があります。
import UIKit
class MenuBookmarksViewController: UITableViewController {
}
UIViewController
クラスに拡張機能を追加するか、ポップオーバーを表示する内にコード (以下)UIViewController
を配置します。
extension UIViewController: UIPopoverPresentationControllerDelegate {
public func popoverPresentationControllerDidDismissPopover(popoverPresentationController: UIPopoverPresentationController) {
if popoverPresentationController.presentedViewController as? MenuBookmarksViewController != nil {
///do your stuff
}
}
}
で閉じられるポップオーバーが渡されpopoverControllerDidDismissPopover:
ます。それを使用して、それぞれの場合に何をしたいかを決定します。
おそらく、UIPopoverController
インスタンスを提示するオブジェクトの ivar としてインスタンスを保存し、デリゲート メソッドで渡された値と比較するだけで済みます。