ios - UIViewController 到 UIImagePickerController 到其他 UIViewController

标签 ios cocoa-touch uiviewcontroller

我正在开发一个 iOS 应用程序,用户应该能够在其中创建包含多张照片的对象。

现在我有两个 ViewController:A 和 B。 View Controller A 显示所有已创建对象的列表和一个用于切换到 View Controller B 的按钮。 View Controller B 负责创建新对象。它由一个 CollectionView 和一个按钮组成,前者显示已为该对象拍摄的所有照片,后者启动 UIImagePickerController 来拍摄新照片。

用例:

  1. 在 ViewController A 中,用户点击按钮创建一个新对象
  2. ViewController B 加载时 Collection View 中没有照片。
  3. 用户必须单击 ViewController B 中的按钮才能加载 UIImagePickerController。
  4. 用户拍照,返回到 ViewController B
  5. 用户可以再拍摄一张照片。

我想合并第 2 步和第 3 步。即

  1. 用户点击 ViewController A 中的按钮
  2. UIImagePickerController 已加载
  3. 用户拍照,返回ViewController B

此刻,我在 ViewController B 的 viewDidAppear 中启动 UIImagePickerController,但首先出现的是 ViewController B,然后是 UIImagePickerController。

编辑:我正在使用 Storyboard来完成这一切。 ViewController A 在导航 Controller 中,ViewController B 在另一个导航 Controller 中,我使用模态 Storyboard转场进行转换。

最佳答案

如果您将图像选择器呈现为模态视图,我的想法是在您的 View Controller B 上编写一个方法,在任意 View Controller 上呈现图像选择器 Controller 。例如:-(void)presentImagePickerFromViewController:(UIViewController *)vc completion:(void (^)(void))completion。在您的 View Controller A 中,实例化一个 View Controller B 对象,并在其上调用此方法,为 View Controller 传递 self。在完成 block 中,现在在没有动画的情况下在导航堆栈上显示 View Controller B。这样,您的 View Controller B 直接从图像选择器获取信息,将所有图像代码封装在 View Controller B 中,并让您在完成选择器后直接转到 View Controller B。

另一方面,如果您在导航堆栈上显示图像选择器,您可能可以从 UINavigationControllerDelegate 之一调用导航 Controller 上的 setViewControllers:animated: 方法 回调。我自己没有对此进行测试,但我相信这种方法允许您将 View Controller 插入导航堆栈。

希望这对您有所帮助!

关于ios - UIViewController 到 UIImagePickerController 到其他 UIViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21353649/

相关文章:

ios - swift 3 uiview animate 仅显示最后两个动画

IOS UIImage 图片颠倒

ios - iPhone 事件指示器

ios - Storyboard和续集 : How does the presenting VC know when the presented VC dismisses itself?

ios - 在 Swift 中将对象传递给 View Controller

android - 将 I18n Iphone 文件转换为 Android

ios - 将自定义 UIView 添加到 Scenekit 节点

ios - Swift - 火种效果

iPhone:将图像保存到特定相册

ios - 如何将异步 Parse.com 函数放在 Swift 中的单独类中?