ios - 创建一个可以嵌入到 UIViews 中并处理自己的模态的可重用控件

标签 ios objective-c uiview uiviewcontroller uicontainerview

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

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

最初,我将它设为 UIViewController 的子类(因此它可以呈现模态等),并且只是将其 View 添加为屏幕上“holder” View 的 subview 。我知道不推荐这样做,因为那时 Controller 不是 VC 层次结构的一部分……而且,我最终遇到了一些关于自动旋转等非常奇怪的行为,尤其是当涉及到相机时。

实现这样的东西的“正确”方法是什么?

最佳答案

我认为您通过将其设为 UIViewController 子类所做的事情是正确的。您应该只使用 UIViewController 公开的方法来添加 subview Controller ,例如 - addChildViewController:

您还会注意到,Interface Builder 有一个容器 View 对象,专门为在 subview Controller 的层次结构中保留一个位置而设计:

enter image description here

关于ios - 创建一个可以嵌入到 UIViews 中并处理自己的模态的可重用控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26514714/

相关文章:

ios - 使用 waitForExpectations 时的 API 冲突

ios - App Store 是否接受自定义浏览器?

iphone - obj-c 添加 c-struct 到字典

iphone - UIView 动画 iOS,Bizzarre

iPhone iOS : How to dynamically move around/resize images on top of an image background?

ios - 如何播放Wav文件

ios - 日期和时间的字符串

ios - NSURLSession 是否发生在单独的线程中?

ios - 以编程方式从其父 View 中删除 subview 并将其附加到其他父 View

ios - 使用 UITableViewController 让 View 粘在底部