6

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

如果我设置imagePicker.sourceType = UIImagePickerControllerSourceTypeCameraprepareForSegue一切正常。

如果我设置imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibraryprepareForSegue我会得到一个几乎黑屏,顶部有一个空的灰色条,我无法关闭:

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

我可以通过不使用情节提要来解决这个问题。我的问题——这可以与故事板一起使用吗?如果不是,为什么不呢?为什么它只适用于展示相机?

编辑:一位同事评论说这可能是 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;

}
4

2 回答 2

2

这个问题是iOS7 Storyboard image picker not working 的副本 :(

那里的答案:

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

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

于 2015-01-17T21:15:00.270 回答
0

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

出于同样的原因,您必须手动初始化 UIImagePickerControllerInstance。我猜 UIImagePicker 的 'initWithCodec' 方法有些古怪,但如果不访问源代码就很难说(感谢 Apple ......)。

PS 确保您也使用了正确类型的 segue。UIImagePickerController 对每种模式的显示方式都很挑剔。“相机”可以是模态或弹出框(推荐模态)。PhotoLibrary必须使用弹出框显示。

于 2014-08-15T20:29:38.820 回答