0

我正在修改我的 iphone 应用程序以使其与 iOS 3.1.3 向后兼容。我允许用户从照片库中加载图像。我向图像选择器提供以下代码:

UIImagePickerController* content = [[UIImagePickerController alloc] init];
content.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
content.delegate = self;
[self presentModalViewController:content animated:YES];
[content release];

这在 ios 4.0+ 上可以正常工作。但是,在 ios 3.1.3 上,图像选择器永远不会出现,并且我收到以下警告:

Can't perform full-screen transition. The fromViewController's view must be 
within a view that occupies the full screen.

在这种情况下,fromViewController 是导航控制器中的可见视图控制器。导航控制器使用以下代码段在 appDelegate didFinishLaunchingWithOptions 中设置:

MyViewController* root = [[MyViewController alloc] initWithNibName:nil bundle:nil];
UINavigationController *aNavigationController = [[UINavigationController alloc] initWithRootViewController:root];
aNavigationController.delegate = self;    
[window addSubview:aNavigationController.view];

在尝试加载图像选择器之前,导航控制器中会显示另一个视图控制器。因此,在加载图像选择器时,导航堆栈中有两个视图控制器。

根据另一篇文章,我尝试使用根视图控制器和导航控制器作为 fromViewController(呈现图像选择器的控制器)。行为是相同的。

我想知道这个问题是否与导航控制器的 modalPresentationStyle 不能在 iOS 3.1.3 中设置的事实有关。对于 iOS 3.2+,我将演示样式设置为 UIModalPresentationFullScreen。我相信这是以前 iOS 的默认设置。但是,我很怀疑只是因为我收到的警告涉及全屏视图。

任何人都可以提供任何其他建议吗?我找不到任何 Apple 文档来解决从 ios 3.x 到 4.0 对 UIImagePicker 或 UINavigationController 的更改。

提前致谢!

4

1 回答 1

0

当视图控制器位于导航控制器内部时,我通常会做的是:

imagePicker = [[UIImagePickerController alloc]init];
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
imagePicker.delegate = self;

[self.navigationController presentModalViewController:imagePicker animated:YES];

希望这对你有用!

于 2011-09-08T14:41:43.070 回答