如何解除UIPopoverController被解雇的时间?

时间:2012-08-21 17:13:52

标签: ios uisplitviewcontroller uipopovercontroller

UISplitViewController有委托方法:

-(void)splitViewController:(UISplitViewController *)svc popoverController:(UIPopoverController *)pc willPresentViewController:(UIViewController *)aViewController

我希望从类似但不存在的委托方法中获取功能:

-(void)splitViewController:(UISplitViewController *)svc popoverController:(UIPopoverController *)pc willDismissViewController:(UIViewController *)aViewController

关于考虑UISplitViewController / UIPopoverController / UIKit的最佳方法的一般考虑不符合KVO,因此我无法向{{1}添加观察者} UIPopoverController属性。

由于

答案:

isPopoverVisible

2 个答案:

答案 0 :(得分:3)

想出来,除了UIPopoverController之外还添加UISplitViewControllerDelegate委托:

//Sent when switching to portrait
- (void)splitViewController:(UISplitViewController*)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController:(UIPopoverController*)pc
{  
    ...

    self.popoverController = pc;
    [self.popoverController setDelegate:self];
}

-(void)splitViewController:(UISplitViewController *)svc popoverController:(UIPopoverController *)pc willPresentViewController:(UIViewController *)aViewController
{
    NSLog(@"SHOWING POPOVER");
}

- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
{
    NSLog(@"HIDING POPOVER");
}

答案 1 :(得分:2)

当您获得第一个委托通知时,您将传递对将显示隐藏视图控制器的UIPopoverController的引用。注册为其委托,然后使用UIPopoverControllerDelegate协议中的-popoverControllerDidDismissPopover:委托方法。