UIImagePickerControllerでsourceTypeをPhotoLibraryにして、
カメラロールを表示させる場合、iPhoneの場合はモーダルビューで表示させる。
[self presentModalViewController:imagePickerController animated:YES];
だが、これだと、iPadではエラーとなる。
iPadの場合は、全面にモーダルビューを表示する事は非推奨となっているため、
popOverViewなどで画面の一部だけを使って表示させる。
- (void)albumAction:(id)sender
{
imagePickerController = [[UIImagePickerController alloc] init];
imagePickerController.delegate = self;
imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
imagePopController = [[UIPopoverController alloc] initWithContentViewController:imagePickerController];
[imagePopController presentPopoverFromRect:btn.bounds inView:btn permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];
}
presentPopoverFromRectにある、btn.bounds、は、
UIButtonがタップされたらその場所を基準にpopOverviewを出す、ってことで、
そのボタンの場所を指定している。
もうひとつ、presentPopoverFromBarButtonItemでも出せる。
これはその名の通り、barButtonを基準に出す場合に便利。
delegateはiPhoneと同じで、
・選択された時
imagePickerController
・キャンセルされた時
imagePickerControllerDidCancel
と、なる。
・参考