【问题标题】:Interface Builder and Cocoa: wiring up behind an App Controller classInterface Builder 和 Cocoa:在 App Controller 类后面连接
【发布时间】: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 中所做的只是连接它的插座,那么它是如何工作的呢?

【问题讨论】:

    标签: objective-c cocoa macos interface-builder


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-11
      • 1970-01-01
      相关资源
      最近更新 更多