1

我正在尝试正确构建一个特定的控件。我将其称为 ImageTile。它基本上是一个小方框,当用户点击它时,将向用户显示(通过弹出窗口中的操作表)从库中选择图像或拍照的选项。根据响应,然后我将 UIImagePickerController 呈现在弹出框内(用于选择图像)或模态(用于拍摄新照片)。一旦他们拍摄/选择图像,我就会出现一个模态视图,并允许他们以几种简单的方式编辑图片。当他们完成编辑时,模式消失,原始的 ImageTile,而不是一个空白的方框,被用户编辑的图像填满。

问题是这个 ImageTile 控件将在应用程序的几个不同部分、多个 View Controller 层次结构中大量使用,等等……我真的希望它是一个基本上完全独立的单元,这样每当我在屏幕上的 UIView 中粘贴 ImageTile 时,上述所有功能都由 ImageTile 本身处理。

最初,我将它设为 UIViewController 子类(因此它可以呈现模式等),然后将其视图添加为屏幕上“持有者”视图的子视图。我知道不建议这样做,因为控制器不是 VC 层次结构的一部分……而且,我最终遇到了一些非常奇怪的行为,比如自动旋转,尤其是在涉及相机的情况下。

实现这样的事情的“正确”方法是什么?

4

1 回答 1

1

我认为您通过使其成为UIViewController子类所做的事情是正确的。您应该只使用UIViewController公开的方法来添加子视图控制器,例如 - addChildViewController:

您还将注意到 Interface Builder 有一个 Container View 对象,专门设计用于在层次结构中为子 View Controller 保留一个位置:

在此处输入图像描述

于 2014-10-22T19:05:24.490 回答