2

UISplitViewController有委托方法:

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

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

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

UISplitViewController考虑到//通常考虑到这样做的最佳方法的想法不符合 KVO UIPopoverControllerUIKit因此我无法向UIPopoverController' 的isPopoverVisible属性添加观察者。

谢谢

回答:

//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");
}
4

2 回答 2

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");
}
于 2012-08-21T17:35:24.950 回答
2

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

于 2012-08-21T17:17:37.017 回答