0

我试图检测UIPopoverController被解雇时,但它似乎不能正常工作,方法没有被调用。这是我呈现UIPopoverController代码:UIPopoverController不触发委托方法

UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init]; 
imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
imagePickerController.delegate = self; 
UIPopoverController *popoverVC = [[UIPopoverController alloc] initWithContentViewController:imagePickerController]; 
popoverVC.delegate = self; 
[popoverVC presentPopoverFromRect:CGRectMake(self.frame.origin.x,self.frame.origin.y, self.frame.size.width, self.frame.size.height) inView:[home view] permittedArrowDirections:0 animated:YES]; 

我试图触发此方法,但没有得到所谓:

- (void) popoverControllerDidDismissPopover:(UIPopoverController *) popoverController; 

而且我确实增加了委托头:

@interface Map : UIView <UIImagePickerControllerDelegate, UINavigationControllerDelegate, UIGestureRecognizerDelegate, UIScrollViewDelegate,UIPopoverControllerDelegate> 

我不知道我错过了什么,根本不工作。

回答

0

您可能已经解决了它,但我只是面临同样的问题。我手里拿的UIPopoverController的实例在我的viewController,不得不这样说:

self.popover.delegate = self; 
self.popover = [[UIPopoverController alloc] initWithContentViewController:wgtvc]; 

当然,因为我初始化UIPopoverController后设置的委托,将覆盖委托设置这不起作用。所以,正确的做法是,先初始化UIPopovercontroller,然后设置委托

self.popover = [[UIPopoverController alloc] initWithContentViewController:wgtvc]; 
self.popover.delegate = self; 

也许你正在某个地方重新初始化您的UIPopoverController - 只是重新初始化后重新设定委托。

Hpoe这有帮助。

+1

谢谢你,我想出了如何使它工作,我发布它作为答案,这是它与其他东西的组合。 –

0

所以,我想出了如何使它工作。

  1. 我为这个类做了一个“全局”变量。

    self.popoverVC = [[UIPopoverController alloc] initWithContentViewController:imagePickerController]; 
    self.popoverVC.delegate = self; 
    
  2. 因为它是一个UIPopoverController内的的UIImagePickerController,我需要听的UIImagePickerController的辞退太,结合这两种方法:

    - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker; 
    - (void) popoverControllerDidDismissPopover:(UIPopoverController *) popoverController 
    

所以当UIPopoverController得到我现在可以检测驳回。