Ipad UIImagePickerController和UIPopoverController错误

nis*_*tcm 5 uiimagepickercontroller ipad uipopovercontroller

我正在使用此代码打开带有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];
Run Code Online (Sandbox Code Playgroud)

但这会导致成员'popoverController'的错误请求,而不是结构或联合,并且此错误'popoverController'未声明(首先在此函数中使用).

此外,我想在选择图像时关闭弹出窗口.

选择图像后,我应该在以下函数中放置什么代码来关闭弹出窗口.

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助!

小智 7

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

@interface ... {
     ...
     UIPopoverController *popoverController;
}
@property (nonatomic, retain) UIPopoverController *popoverController;
@end
Run Code Online (Sandbox Code Playgroud)

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

要解雇popover,你可以调用dismissPopoverAnimated : .

[self.popoverController dismissPopoverAnimated:YES];
Run Code Online (Sandbox Code Playgroud)


nis*_*tcm 7

这个错误是由于我的功能需要一个条形按钮项目而我使用的是普通的ui按钮.