我正在修改我的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的更改。
提前致谢!
答案 0 :(得分:0)
当视图控制器位于导航控制器内时,我通常会这样做:
imagePicker = [[UIImagePickerController alloc]init];
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
imagePicker.delegate = self;
[self.navigationController presentModalViewController:imagePicker animated:YES];
希望它适合你!