使用UIImagePickerController导致我的应用程序崩溃

时间:2012-05-08 12:24:47

标签: ios uiimagepickercontroller

我对这个问题进行了很多研究。在触摸按钮时,我必须从设备中选择一个图像并在屏幕上显示。

但是当触摸/按下按钮时,它会导致我的应用程序崩溃。 它从这行代码中崩溃了:

[self presentModalViewController:myPhotopicker animated:YES];

我正在使用Xcode 4.2开发iPad应用程序。我正在使用iPad 5.0模拟器进行测试。我的系统在Mac OS X上运行,版本为10.6.8。

按下按钮时调用以下功能:

-(IBAction)getPhoto:(id)sender
{
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
        if (myPhotopicker==nil) { myPhotopicker = [[UIImagePickerController alloc] init];
            myPhotopicker.delegate = self; }// create once!
        myPhotopicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

        [self presentModalViewController:myPhotopicker animated:YES];

    } else {
        NSString *str = @"Photo Album is not available!";     

    }   

}

1 个答案:

答案 0 :(得分:0)

我尝试了你的代码,可以在模拟器中重现崩溃。 但它在iOS 4的iPhone 4上工作正常。

那就是说,我在模拟器中让我的画廊包含了一些照片。 (启动模拟器Safari,打开一些页面,长按一下保存一些图片,然后从菜单中选择保存。)

现在,模拟器写

2012-05-08 15:53:55.605 test[5870:f803] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'On iPad, UIImagePickerController must be presented via UIPopoverController'

到控制台。

好的,请阅读,完成:

-(IBAction)getPhoto:(UIButton *)sender
{
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) 
    {
        if (myPhotopicker==nil) {
            myPhotopicker = [[UIImagePickerController alloc] init];
            myPhotopicker.delegate = self;
        }// create once!
        myPhotopicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
            // iPad Code:
            UIPopoverController *popover =
                [[UIPopoverController alloc] initWithContentViewController:myPhotopicker];
            [popover presentPopoverFromRect:sender.bounds
                                     inView:self.view
                   permittedArrowDirections:UIPopoverArrowDirectionAny
                                   animated:YES];
        } else {
            // iPhone Code:
            [self presentModalViewController:myPhotopicker animated:YES];
        }
    } else {
        NSLog(@"Photo Album is not available!");
    }     
}

现在看起来像这样:
enter image description here