这让我摸不着头脑。我有一个实现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。
答案 0 :(得分:3)
我认为您的委托方法实现不正确。尝试
- (BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController
而不是
- (bool)popoverControllerShouldDismissPopover
和
- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
而不是
- (void)popoverControllerDidDismissPopover
重要的是让方法名称和参数正确,否则不会调用它们。
祝你好运!