【发布时间】:2014-08-12 04:59:08
【问题描述】:
我的 ipad 应用程序的一个视图中有两个图像选择器。一个以弹出框的形式打开照片库,另一个显示相机,并允许用户拍照并将其保存到与照片库相同的 UIImage 中。
我不能使用 didFinishPickingMediaWithInfo 两次,所以我添加了一个基于源类型的 if then 语句作为解决方法。这种方法会导致“if ([picker....line”) 上出现错误“Expected ']'
任何有关如何解决此错误的帮助将不胜感激。
#pragma mark Camera/Library
//Button to open library
- (IBAction)library:(id)sender{
//Create image picker controller
self.imagePicker = [[UIImagePickerController alloc]init];
//Set source to the photo library
self.imagePicker.delegate = self;
self. imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
self.imagePicker.allowsEditing = NO;
self.popoverController = [[UIPopoverController alloc]
initWithContentViewController:imagePicker];
self.popoverController.delegate = self;
CGRect popoverRect = [self.view convertRect:[self.view frame]
fromView:[self.view superview]];
popoverRect.size.width = MIN(popoverRect.size.width, 80) ;
popoverRect.origin.x = popoverRect.origin.x+150;
[self.popoverController presentPopoverFromRect:popoverRect inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];
}
-(void) viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
if (self.popoverController != nil) {
[self.popoverController dismissPopoverAnimated:animated];
self.popoverController = nil;
}
}
- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController {
self.popoverController=nil;
}
- (IBAction)camera:(id)sender
{
if ([UIImagePickerController isSourceTypeAvailable:
UIImagePickerControllerSourceTypeCamera])
{
//Create image picker controller
self.imagePicker = [[UIImagePickerController alloc]init];
self.imagePicker.delegate = self;
self.imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
self.imagePicker.allowsEditing = NO;
self.imagePicker.cameraDevice = UIImagePickerControllerCameraDeviceRear;
[self presentViewController:imagePicker animated:YES completion:nil];
}
else
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Camera failed to open"
message:@"Camera is not available" delegate:nil cancelButtonTitle:@"OK"
otherButtonTitles: nil];
[alert show];
}
}
#pragma mark Image Picker Delegate Methods
//on cancel dimiss picker controller
-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
[self dismissViewControllerAnimated:YES completion:nil];
}
//Used when user has chosen an image
- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
if ([picker sourceType == UIImagePickerControllerSourceTypeCamera]){
UIImage * image = info[UIImagePickerControllerOriginalImage];
imageView.image = image;
[self dismissViewControllerAnimated:YES completion:nil];
}
else
{
UIImage * image = info[UIImagePickerControllerOriginalImage];
imageView.image = image;
}
}
【问题讨论】:
-
if ([picker sourceType] == UIImagePickerControllerSourceTypeCamera)写这个 -
我仍然在下一行得到预期的 ']' 以及预期的表达式,并在下一行使用未声明的标识符
-
我将您的代码复制到我的 xcode 并替换该行,它对我来说工作正常
-
您是否获得了未声明的 imageView 标识符??
-
实际上我刚刚修复了那个错误,但我仍然得到其他错误
标签: ios objective-c ipad uiimagepickercontroller