【发布时间】:2012-02-04 13:35:21
【问题描述】:
我知道这类问题以前曾被讨论过,但我还没有找到一个明确的答案来解决我目前面临的问题。这就是在库中,如何最好地发布具有复杂视图的 UIViewController 子类?
我能看到的方法有:
同时发布 XIB 并要求您的代码的用户将其添加到他们的项目中。我认为这是不可取的,因为它使维护成为一场噩梦。如果将视图控制器添加到库项目中,则必须将新的 XIB 添加到每个使用该库的项目中。
在
loadView/viewDidLoad中创建您的视图,并在其中手动完成所有操作。尽管对于复杂的视图层次结构,这可能非常复杂。以某种方式在编译时从您的 XIB 生成您的
loadView代码。不过,要获得可以正确执行此操作的东西听起来很复杂。
我不太明白 Apple 是如何做到的。以MessageUI 框架为例,MFMailComposeViewController 是一个非常复杂的视图,但它没有 XIB(或者至少我不知道 - 也许真的有?)。我很想知道 Apple 是如何做到的——有人知道吗?
【问题讨论】:
-
Apple 将 IB 用于某些事情,但他们拥有的任何 UI 代码都已经被编译并在设备上。无需将其包含在开发套件中,因为无论如何您都无法更改设备上的内容。 MessageUI 的 UI 实际上相当简单。如果他们确实为此使用了笔尖,它可能与邮件共享,但为此,他们可能只是在代码中创建它。
-
这不是那么简单。我将按照我在 SDK 附带的
MessageUI二进制文件中看到的内容进行说明。我可以看到它有一个名为initWithComposition:的方法,这有点令人困惑,因为我不太清楚是什么在调用它。 -
不,我现在明白了。还有另一个控制器对象和一个视图似乎可以完成该视图的繁重工作。所以,是的,他们基本上都是在代码中完成的。
标签: ios uiviewcontroller xib