UIPopoverController永远不会调用委托方法

时间:2012-01-07 20:28:01

标签: ipad uipopovercontroller

这让我摸不着头脑。我有一个实现UIPopoverControllerDelegate的视图控制器:

@interface MyViewController : UIViewController<UIPopoverControllerDelegate> {

它实现了该协议中的方法,如下所示:

- (bool)popoverControllerShouldDismissPopover
{
    NSLog(@"THIS IS NEVER CALLED");    
    return true;
}

- (void)popoverControllerDidDismissPopover
{
    NSLog(@"THIS IS ALSO NEVER CALLED");
}

我创建了一个在弹出框中显示的视图控制器,以及弹出控制器,如下所示:

-(IBAction)buttonPress:(id)sender
{
    self.popoverViewController = [[MyPopoverViewController alloc] init];
    self.popover = [[UIPopoverController alloc] initWithContentViewController:popoverViewController];
    self.popover.delegate = self;

    CGRect frame = button.frame;
    [self.popover presentPopoverFromRect:frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}

我非常清楚地设置popover.delegate = self HOWEVER ,我实现的popoverViewController委托方法永远不会被调用。

有什么想法吗?

编辑:注意,我正在使用ARC&amp; LLVM。

1 个答案:

答案 0 :(得分:3)

我认为您的委托方法实现不正确。尝试

- (BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController
而不是      - (bool)popoverControllerShouldDismissPopover

- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController

而不是

- (void)popoverControllerDidDismissPopover

重要的是让方法名称和参数正确,否则不会调用它们。

祝你好运!