【问题标题】:Segue from UIImagePickerController从 UIImagePickerController 转接
【发布时间】:2013-11-14 21:12:39
【问题描述】:

我正在尝试从 UIImagePickerController 到另一个视图控制器进行转场。

我已经尝试过 push segue,因为我知道 UIImagePickerController 是 UINavigationController 的子类,但它不起作用。错误是“只有在源控制器由 UINavigationController 的实例管理时才能使用 Push segues。”

现在我尝试了模态转场,但是当它发生时,屏幕变黑了。

这两个问题之间有联系吗?请问我该怎么做?

【问题讨论】:

    标签: ios objective-c uiimagepickercontroller segue


    【解决方案1】:

    您不能直接从UIImagePickerController 执行segue。

    尝试从将UIImagePickerController 实例化到目标VC 的视图控制器中添加一个push segue。

    现在在您的源 VC 中实现 UIImagePickerControllerDelegate 方法 didFinishPickingMediaWithInfo: 并在该方法调用 self performSegueWithIdentifier: sender: 中使用您最近创建的 segue 标识符。

    当然,你需要为segue设置一个标识符,并在你的源VC头接口中添加UINavigationControllerDelegate, UIImagePickerControllerDelegate协议引用。

    如果您需要将一些数据(例如图像信息)传递给目标 VC,您可能需要在源 VC 中实现 prepareForSegue: 方法。

    【讨论】:

    • 我没有实例化UIImagePickerController 的视图控制器。 UIImagePickerController 是我的应用程序的第一个视图控制器。您是否有一个链接来解释我们如何才能拥有一个实例化 UIImagePickerController 的视图控制器?
    • 我不确定您是如何尝试将 UIImagePickerController 添加到情节提要的。据我所知,Xcode 不允许你这样做。关于查询的第二部分,您可以将任何普通的 UIViewController 添加到情节提要中。在这个 VC 中,您可以在单击某个按钮时实例化一个 UIImagePicker 控制器。在您选择图像/捕获图像之后,您始终可以执行所需的 segue,正如我之前讨论的那样。如果您可以分享一些代码,可能会有所帮助。
    • 我没有很多代码,但我做了以下工作:我在 Storyboard 上放置了一个视图控制器,并将其类更改为 UIImagePickerController。这是一种错误的做事方式吗?我希望 UIImagePickerController 在我们启动应用程序时出现在这里,而不是在我们单击按钮之后。
    • 我已经尝试过你的方法并且它有效,但老实说我不明白为什么我需要第三个空白视图控制器。请问我如何只使用我的两个初始视图控制器?
    • 好的。我明白了。看来您一开始就想打开相机。您可以通过从身份检查员更改 VC 类的方法来维持。但我建议不要直接将其更改为 UIImagePickerController。而是创建 UIImagePickerController 的子类并使用它。但即使这种方法有效,你仍然会得到一个非常丑陋和不一致的 UI。或者,您可以创建一个自定义视图并将其添加为图像选择器控制器的cameraOverlayView
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多