Ipad UIImagePickerController和UIPopoverController错误

Ipad UIImagePickerController和UIPopoverController错误,ipad,uiimagepickercontroller,uipopovercontroller,Ipad,Uiimagepickercontroller,Uipopovercontroller,我正在使用此代码打开带有imagepicker的popover -(IBAction)photosAction:(id)sender { // dismiss any left over popovers here UIImagePickerController* picker = [[UIImagePickerController alloc] init]; picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

我正在使用此代码打开带有imagepicker的popover

-(IBAction)photosAction:(id)sender 
{
// dismiss any left over popovers here
UIImagePickerController* picker = [[UIImagePickerController alloc] init]; 
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
picker.delegate = self; 

UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:picker];
self.popoverController = popover;          
popoverController.delegate = self;
[popoverController presentPopoverFromBarButtonItem:sender  permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
[picker release];
但这会导致请求非结构或联合中的成员“popoverController”时出现此错误,并且此错误“popoverController”未声明(首次在此函数中使用)

我还想在选择图像时关闭弹出窗口

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
我应该在下面的函数中输入什么代码,以便在选择图像后关闭popover

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

谢谢你的帮助

该错误表示尚未在视图控制器中声明popoverController。您需要将其作为ivar和属性添加到接口中(它不是内置的):

在实现中,添加@synthesis,在viewDidUnload中将其设置为nil,并在dealloc中释放

若要取消popover,您可以打电话


导致此错误的原因是我的函数需要一个条形按钮项,而我使用的是普通的ui按钮。

请尝试使用以下代码:

UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
popover = [[UIPopoverController alloc] initWithContentViewController:imagePicker];
[popover presentPopoverFromRect:CGRectMake(0.0, 0.0, 400.0, 400.0) 
                         inView:self.view
       permittedArrowDirections:UIPopoverArrowDirectionAny 
                       animated:YES];

谢谢,这解决了错误。但是,当我点击应该加载popover的按钮时,我在控制台中看到这些错误。***-[UIRoundedRectButton视图]:发送到实例0x4d1e140的未识别选择器由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'***-[UIRoundedRectButton视图]:发送到实例0x4d1e140的未识别选择器为按钮单击设置了什么操作?显示创建按钮的代码。确保addTarget中的选择器显示“photosAction:”并在末尾加上冒号。如果按钮是在IB中创建的,请检查内部触摸的连接。IBOutlet UIButton*选择ImageBTN@属性(非原子,保留)IBUIButton*selectImageBtn@合成SelectImageBtnow,当我输入此代码时,它可以工作。UIPopoverController*aPopover=[[UIPopoverController alloc]initWithContentViewController:picker];[aPopover setPopoverContentSize:CGSizeMake(320320)];[aPopover presentPopoverFromRect:CGRectMake(200200,-100,-100)查看:self.view许可证行方向:UIPopOverErrorDirection任何动画:是];self.popoverController1=aPopover;不太确定保留popoverController是否是个好主意。我猜popoverController也保留了contentsViewController,并可能在它的dealloc中释放它,这将导致它们永远不会彼此释放。我一直在为同样的问题绞尽脑汁。你有没有可能发布你的代码?您是否将UI更改为使用条形按钮项,或更改了代码?
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
popover = [[UIPopoverController alloc] initWithContentViewController:imagePicker];
[popover presentPopoverFromRect:CGRectMake(0.0, 0.0, 400.0, 400.0) 
                         inView:self.view
       permittedArrowDirections:UIPopoverArrowDirectionAny 
                       animated:YES];