我对这个问题进行了很多研究。在触摸按钮时,我必须从设备中选择一个图像并在屏幕上显示。
但是当触摸/按下按钮时,它会导致我的应用程序崩溃。 它从这行代码中崩溃了:
[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!";
}
}
答案 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!");
}
}
现在看起来像这样: