UIPopoverController不触发委托方法
问题描述:
我试图检测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>
我不知道我错过了什么,根本不工作。
答
您可能已经解决了它,但我只是面临同样的问题。我手里拿的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这有帮助。
答
所以,我想出了如何使它工作。
-
我为这个类做了一个“全局”变量。
self.popoverVC = [[UIPopoverController alloc] initWithContentViewController:imagePickerController]; self.popoverVC.delegate = self;
-
因为它是一个UIPopoverController内的的UIImagePickerController,我需要听的UIImagePickerController的辞退太,结合这两种方法:
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker; - (void) popoverControllerDidDismissPopover:(UIPopoverController *) popoverController
所以当UIPopoverController得到我现在可以检测驳回。
谢谢你,我想出了如何使它工作,我发布它作为答案,这是它与其他东西的组合。 –