Я пытаюсь использовать UIImagePickerController, чтобы получить фотографию от пользователей Фотографии на их iPhone / iPad.Этот код прекрасно работает на iPhone, но когда я запускаю его на iPad, отладчик выдает мне сообщение « Завершение приложения из-за необработанного исключения« NSInvalidArgumentException », причина:« На iPad UIImagePickerController должен быть представлен через UIPopoverController ».Я очень новичок в Objective-C, поэтому я не уверен, как отредактировать этот код для использования UIPopoverController при его запуске на iPad.Я бы предпочел не создавать 2 новых View Controller, поэтому мне было интересно, знает ли кто-нибудь, какой код мне нужно добавить, чтобы он работал на iPhone и iPad.Вот код в моих контроллерах представления:
ViewController.h:
@interface PhotoViewController : UIViewController <UINavigationControllerDelegate, UIImagePickerControllerDelegate> {
UIButton *grabButton;
UIImageView *image;
UIImagePickerController *imgPicker;
}
@property (strong, nonatomic) IBOutlet UIButton *grabButton;
@property (strong, nonatomic) IBOutlet UIImageView *image;
@property (strong, nonatomic) UIImagePickerController *imgPicker;
- (IBAction)grabImage;
@end
ViewController.m:
#import "PhotoViewController.h"
@implementation PhotoViewController
@synthesize grabButton;
@synthesize image;
@synthesize imgPicker;
- (IBAction)grabImage {
[self presentModalViewController:self.imgPicker animated:YES];
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editInfo {
image.image = img;
[[picker parentViewController] dismissModalViewControllerAnimated:YES];
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
self.title = NSLocalizedString(@"Photo Gallery", @"Photo Gallery");
self.tabBarItem.image = [UIImage imageNamed:@"42-photos.png"];
}
return self;
}
- (void)viewDidLoad
{
self.imgPicker = [[UIImagePickerController alloc] init];
self.imgPicker.allowsImageEditing = YES;
self.imgPicker.delegate = self;
self.imgPicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
[super viewDidLoad];
}
Заранее спасибо!