2012-01-07 122 views
0

这让我挠了挠头。我有一个实现UIPopoverControllerDelegate视图控制器:永远不会调用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然而,,我已经实现的popoverViewController委托方法永远不会被调用。

任何想法?

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

+0

弹出窗口是否正确显示? – timthetoolman 2012-01-07 21:01:32

+0

是的 - 它正确显示和解雇 - 只是不调用委托方法。 – 2012-01-07 22:34:51

回答

3

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

- (BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController 

而非 - (布尔)popoverControllerShouldDismissPopover

- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController 

而不是

- (void)popoverControllerDidDismissPopover 

您获得方法名和参数是否正确是非常重要的,否则他们不会被叫。

祝你好运!

+0

啊......是的,就是这样。啊,找出答案的乐趣很简单,你忽略了... – 2012-01-08 03:14:08

+1

不用担心。有时它只需要另一双眼睛! – timthetoolman 2012-01-08 04:06:30

相关问题