2012-01-07 209 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

相關問題