带SplitViewController的iPad iOS Imagepicker

带SplitViewController的iPad iOS Imagepicker,ios,ipad,uiimagepickercontroller,uisplitviewcontroller,Ios,Ipad,Uiimagepickercontroller,Uisplitviewcontroller,我有一个带有主表视图和详图视图的拆分视图。在分割视图主视图的导航栏上,我有一个按钮,用户可以通过imagePicker拍照。但当我按下按钮时,我的程序一直崩溃。以下是按下按钮时调用的MasterViewController.m的过程: -(void) takePicture:(id) sender { UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; if([UIImagePicker

我有一个带有主表视图和详图视图的拆分视图。在分割视图主视图的导航栏上,我有一个按钮,用户可以通过imagePicker拍照。但当我按下按钮时,我的程序一直崩溃。以下是按下按钮时调用的MasterViewController.m的过程:

-(void) takePicture:(id) sender
{

UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];

if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{
    [imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];
}
else
{
    [imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
}

[imagePicker setDelegate:self];

//[self presentViewController:imagePicker animated:YES completion:nil];

if( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
    UIPopoverController * popOverController = [[UIPopoverController alloc] initWithContentViewController:imagePicker];
    [popOverController presentPopoverFromRect:((UIButton *)sender).frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
    //[popOverController presentPopoverFromRect:CGRectMake(700, 1000, 10, 10) inView:self.detailViewController.imageSpace permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

}else {

    [self presentViewController:imagePicker animated:YES completion:nil];
}

}
下面是错误消息:

2013-02-11 09:06:43.975 ImageSplit2[13044:c07] -[UIBarButtonItem frame]: unrecognized selector sent to instance 0x7183d00
2013-02-11 09:06:43.976 ImageSplit2[13044:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIBarButtonItem frame]: unrecognized selector sent to instance 0x7183d00'
sender不是UIButton,它是一个UIBarButtonItem,它不是一个视图,因此没有框架属性

更改此项:

[popOverController presentPopoverFromRect:((UIButton *)sender).frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
致:

旁注:如果从照片库中选择图像,则必须在iPad上使用popover。但是,将基于摄像头的图像选择器作为全屏视图控制器是完全有效的。因此,您可能希望将您的if声明更改为:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
致:


谢谢你,这正是我所需要的,第二笔奖金让我的计划变得更好;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad && imagePicker.sourceType != UIImagePickerControllerSourceTypeCamera)