Interface Builder 和 Cocoa:在 App Controller 类后面连接

Posted

技术标签:

【中文标题】Interface Builder 和 Cocoa:在 App Controller 类后面连接【英文标题】:Interface Builder and Cocoa: wiring up behind an App Controller class 【发布时间】:2011-02-09 19:47:43 【问题描述】:

我一直在关注this 教程。在编写 App Controller 类,然后在 Interface Builder 中添加和连接时,我遇到了概念问题。

添加 AppController 类 下一个任务是添加一个实例 Interface Builder 的新类 记录并连接班级 网点。

创建一个实例 应用控制器类。在界面中 生成器库窗口,单击类。 找到 AppController 类。拖 这个类进入文档窗口 创建一个名为 App 的实例 控制器。连接应用程序 控制器的 qcWindow 出口到 设计窗口。按住控件 钥匙。在文档窗口中,从 应用控制器到窗口 目的。选择 qcWindow 出口 从出现的列表中。连接 App Controller 的 qcView 出口到 设计窗口中的 QC 视图。抓住 控制键。从拖动 App Controller 到 QC 视图中 设计窗口。选择 qcView 出现的列表中的出口。

具体来说,我不明白这个 App Controller 是如何在运行时使用的。我所做的只是在 IB 中连接窗口并查看插座,它神奇地工作,就好像它在我的应用程序委托的 applicationDidFinishLaunching:aNotification 方法中被初始化一样。我的意思是,我没有在代码中的任何地方使用我的 App Controller 类,而我在 IB 中所做的只是连接它的插座,那么它是如何工作的呢?

【问题讨论】:

【参考方案1】:

当您的应用程序启动时,NSApplication 的共享实例被创建,MainMenu.xib/nib is loaded 及其内容(包括主菜单本身)被连接起来。在此加载过程中,NSApp 实例的委托指向您的“未冻结”(未归档)类,该类(以及其他可能的事情)可以回答 NSApp 委托问题,然后可以开始向它发送消息(并依赖它为 App范围的行为自定义)。

所有这一切的一个有用方面是,您可以通过[NSApp delegate][[NSApplication sharedApplication] delegate] 的缩写)从应用程序中的任何位置访问委托。如果您将架构的某些部分挂起并为它们提供访问器(例如[[NSApp delegate] fooController]),这对于导航架构的某些部分非常方便。

【讨论】:

以上是关于Interface Builder 和 Cocoa:在 App Controller 类后面连接的主要内容,如果未能解决你的问题,请参考以下文章

从 Cocoa 中的其他 nib(即 Interface Builder)加载 nib

在 Cocoa/Interface Builder 中,单击按钮后如何清除文本字段中的文本

使用 Xcode 故事板会导致 Xcode 冻结,并且 Interface Builder Cocoa Touch Tool 飙升至 %99

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

Xcode 6:构建挂起并且 Interface Builder Cocoa Touch Tool 开始分配所有 RAM

Builder模式 和 Fluent Interface