Interface Builder 中的占位符对象

Posted

技术标签:

【中文标题】Interface Builder 中的占位符对象【英文标题】:Placeholder objects in Interface Builder 【发布时间】:2009-12-16 02:40:38 【问题描述】:

有人能解释一下Interface Builder 文档窗口中可能出现的占位符对象的种类吗?

我知道存在的占位符类型有:文件的所有者、第一响应者和应用程序代表

链接:

This thread 解释了急救人员。 This thread 解释了 App Delegate。 iPhone Interface Builder and Delegates:回答了问题,但不是很清楚

【问题讨论】:

【参考方案1】:

我从 Apple 的开发者网站 Interface Builder 复制了此内容,希望对您有所帮助。

基本上,用我自己的话来说,占位符包含您程序中的所有内容,它们包含用户看到的所有内容,例如UIViewUIImageView,类似于这些内容

Choose Appropriate Controller Objects

在 Cocoa 和 Cocoa Touch nib 文件中,File’s Owner 占位符对象提供了您的应用程序和 nib 文件中的对象之间的关键链接。加载 nib 文件时,必须为 nib 加载例程提供指向应成为文件所有者的对象的指针。作为加载过程的一部分,nib 加载代码会自动重新创建您指定的对象与与文件所有者有连接的 nib 文件对象之间的任何连接。

在设计应用程序的架构时,重要的是要考虑要管理哪些 nib 文件的对象。只有一个 File's Owner 占位符对象的存在并非没有充分的理由。通常最好让一个对象来协调 nib 文件及其内容的加载和管理。这种单点接触在应用程序的数据模型和用于呈现该数据模型的可视元素之间提供了所需的屏障,并且是模型-视图-控制器设计的核心。

除了文件的所有者对象之外,您还可以直接在 nib 文件中创建其他控制器对象来管理 nib 文件的子集。以这种方式使用多个控制器可以将窗口的行为划分为更易于管理的块。例如,如果您的窗口有多个不同信息的窗格,您可以创建单独的控制器对象来管理每个窗格。每个控制器将继续通过文件所有者来获取更多信息。

在 iPhone 应用程序中,除了 File’s Owner 之外,还可以在 nib 文件中包含占位符对象。这些额外的占位符对象几乎总是用于表示您的应用程序已经在使用的导航控制器和其他视图控制器。但是,这些额外占位符对象的存在并没有削弱文件所有者的角色。 File's Owner 对象仍然负责协调 nib 文件内容的整体行为。

【讨论】:

感谢您的解释。值得一提的是,在interface builder中,可以从inspector的信息选项卡中设置File's Owner的类。 我想现在我在其他问题上找到了其他部分的一些答案,这个答案似乎回答了唯一剩下的一点。【参考方案2】:

我想我在回复 question 时提供了一个彻底的答案。

另外,我将 App Delegate 称为占位符。占位符是在 NIB 文件中可用的对象,用于建立往返连接,但在加载该文件时不会实例化。因此,当您在 MainWindow.xib 文件中有一个橙色立方体且自定义类设置为“MyAppDelegate”时,会导致在加载 NIB 时实例化“MyAppDelegate”的实例。作为一个反例,MainWindow.xib 的文件所有者通常是“MyApplication”,并且在加载 NIB 时不会实例化 MyApplication 的实例,它已经分配和初始化,并且正在加载。因此,文件的所有者是已经存在的对象的占位符,而应用程序委托通常不是。

【讨论】:

以上是关于Interface Builder 中的占位符对象的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xcode Interface Builder 中显示占位符背景?

Xcode 4.2 Interface Builder Dock 图标

@IBDesignable 错误:IB Designables:无法更新自动布局状态:Interface Builder Cocoa Touch Tool 崩溃

php 在Beaver Builder订阅表单中更改名称字段占位符

Interface builder中的NSWindowController对象链接

Interface Builder 不会显示现有 XCode 项目中的对象?