故事板中的UIImagePickerController:UIImagePickerControllerSourceTypePhotoLibrary显示黑屏

时间:2014-03-03 21:45:38

标签: ios objective-c ios7 uiimagepickercontroller photolibrary

我有一个故事板,我在其中创建了一个UINavigationController实例并将其自定义类设置为UIImagePickerController

如果我在imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera中设置prepareForSegue,一切正常。

如果我在imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary中设置prepareForSegue,我会看到一个大部分黑屏,顶部有一个空的灰色条,我无法解雇:

[截图的未来位置 - 我无法发布图片]

我可以通过不使用故事板来解决这个问题。我的问题 - 这可以与故事板一起工作吗?如果没有,为什么不呢?为什么它只适用于展示相机?

编辑:一位同事评论说这可能是ios7的一个新问题

如果故事板触发了segue,则下面的代码不起作用

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    NSAssert([segue.destinationViewController isKindOfClass:[UIImagePickerController class]], @"Destination VC should be UIImagePickerController");

    UIImagePickerController *imagePicker = (UIImagePickerController*) segue.destinationViewController;

    imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    imagePicker.allowsEditing = YES;
    imagePicker.delegate = self;

}

2 个答案:

答案 0 :(得分:2)

此问题与iOS7 Storyboard image picker not working :(

重复

那里的答案是:

  

初始化控制器UIImagePickerController *controller = [[segue destinationViewController] init];

......对大多数人来说似乎都有效,所以我建议将其作为该问题的副本关闭,这已被回答了一段时间。

答案 1 :(得分:0)

绝对奇怪。我到目前为止找到的唯一解决方案是:ios7-storyboard-image-picker-not-working

出于同样的原因,您必须手动初始化UIImagePickerControllerInstance。 我猜这个' initWithCodec'有一些时髦的东西。 UIImagePicker的方法但很难说没有访问源代码(gee感谢Apple ...)。

P.S。确保您也使用正确类型的segue。 UIImagePickerController对于每种模式的显示方式都很挑剔。 '相机'可以是模态或弹出(模态被推荐)。使用popover显示PhotoLibrary 必须