首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示来自UIImagePickerController的另一个模式视图

显示来自UIImagePickerController的另一个模式视图
EN

Stack Overflow用户
提问于 2010-09-27 05:21:27
回答 5查看 6.8K关注 0票数 7

我想在用户拍摄照片或选择保存的照片后添加确认视图。确认视图将只显示所选的图像,工具栏中有一个取消和上传按钮。

我的UIImagePickerController是从我的一个视图控制器以模态方式呈现的,该视图控制器由导航控制器控制,导航控制器又由选项卡栏控制器控制。

如何以模态方式显示确认视图,以便在用户选择照片时占据整个屏幕(就像图像选择器视图一样)?理想情况下,我想要这样的东西:

代码语言:javascript
复制
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    [picker dismissModalViewControllerAnimated:YES];
    UIViewController *modal = [[UIViewController alloc] init];
    modal.view = confirmationView;
    [self presentModalViewController:modal animated:YES];
    [modal release];
}

然而,这会使应用程序崩溃。我是否应该从选取器中以模态方式显示确认视图?如果是这样,我如何确保当确认视图关闭时,选择器也不会显示?

编辑:

修复了我发布的代码中的错误。这就是当我尝试从内存而不是copy+paste输入时发生的事情:(不管怎样,到目前为止的建议都没有帮助。

如果我呈现模态控制器,然后取消选择器,什么也不会发生,大概是因为两个控制器随后都被取消了。

如果我取消了选择器,然后呈现模态控制器,我会得到一个关于模态转换的异常:

代码语言:javascript
复制
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Attempting to begin a modal transition from <UINavigationController: 0x6b33940> to <UIViewController: 0x6b62b00> while a transition is already in progress. Wait for viewDidAppear/viewDidDisappear to know the current transition has completed'
EN

回答 5

Stack Overflow用户

发布于 2010-09-27 14:42:02

找到了解决方案。实际上,需要取消拾取器,诀窍是关闭该取消的动画,以便它立即发生,然后呈现第二个模式视图。

编辑:实际上,它几乎让我得到了我想要的东西。当您关闭选取器时,原始视图会在瞬间显示,然后模式视图会显示动画。这看起来有点时髦。

我也试着把选择器留在身边,而不是把它打发掉。相反,我调用了[picker presentModalViewController:modal animated:YES]。这让我可以顺利地从选择器转换到确认视图。但是,当我完成确认视图时,我需要从原始控制器调用[self dismissModalViewControllerAnimated:YES]。这样做的效果是,在清除所有内容之前,首先显示图像拾取器。再说一次,这并不是我想要的。

理想情况下,我想要的效果与Facebook iPhone应用程序上传照片时使用的效果相同。一旦你选择了一张照片,它就会无缝地转换到确认视图。从该视图中取消或确认将平滑地过渡回原始的主视图。它使确认视图看起来像是图像选择器的一部分,而实际上它可能只是另一个自定义视图。

我该怎么做??

票数 3
EN

Stack Overflow用户

发布于 2011-08-14 09:34:18

试试这个。

代码语言:javascript
复制
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    UIViewController *modal = [[UIViewController alloc] init];
    modal.view = confirmationView;
    picker.navigationController pushViewController:modal animated:YES];
    [modal release];
}
票数 1
EN

Stack Overflow用户

发布于 2010-09-27 05:59:22

你在展示它之前发布了modal。试试这个:

代码语言:javascript
复制
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    UIViewController *modal = [[UIViewController alloc] init];
    modal.view = confirmationView;
    [self presentModalViewController:modal animated:YES];
    [modal release];
    [picker dismissModalViewControllerAnimated:YES];
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3799879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档