Xcode 4 中的 Cocoa 绑定

2024-01-23

Objective-c 是可以学习的;可可是可以学习的;我发现 Interface Builder 及其后代 Xcode 4 完全难以理解!没有文本(相当于 C 或 Obj-c 源代码)可供参考。所有的描述都是“拖到这里;连接那个;Ctl 拖到那里”,我仍然迷失......

我一直在尝试研究苹果关键技术的各种例子。我一直在浏览 Cocoa Bindings 和示例中的示例文件NSTableViewBinding http://developer.apple.com/library/mac/#samplecode/NSTableViewBinding/Introduction/Intro.html在苹果开发者中。为了尝试和理解它,我一直在尝试复制它。

现在参考顶部的评论awakeFromNib文件中的方法MyWindowController.m http://developer.apple.com/library/mac/#samplecode/NSTableViewBinding/Listings/MyWindowController_m.html#//apple_ref/doc/uid/DTS40010522-MyWindowController_m-DontLinkElementID_8我如何在 Xcode 4 中建立这些连接???

  1. The Object called TableArray对象库或源代码中不存在;这是从哪里来的?

  2. The Referencing Bindings在右侧;这些是如何创建的?

  3. 顶部提到的各种键/值对awakeFromNib方法;这些是如何创建的?

我知道 Xcode 4 应该是一个更直接的改进,但我对 IB 的替代感到非常困惑。网上所有的IB材料都指的是完全不同的早期版本,所以我找不到太多帮助。

跟进

我确实成功地弄清楚了 Xcode 4 中的 Cocoa Bindings。我能够用几行代码复制示例程序的功能。

以下是我花了一段时间才弄清楚的问题:

  1. TableArray is the Array Controller Object从对象库拖到 XIB 中的对象列表,然后重命名。 (Apple 请注意:右键单击 HUD 视图中的基本对象类会很好)

  2. 斯蒂芬·波莱托的 https://stackoverflow.com/questions/5521309/cocoa-bindings-in-xcode-4/5521592#5521592答案是连接这一切的宝贵指南。

  3. It was not immediately apparent to me how the connection interface works in the right-click HUD: figure 2

  4. 存储阵列myContentArray隐含在实例化中Array Controller Object

  5. 单击并从 TableArray 的 HUD 拖动到 .h 文件中 AppDelegate 的定义,以在此处创建连接。


要建立 awakeFromNib 注释中描述的绑定:

  1. TableArray 是一个 NSArrayController。在 Interface Builder 文档的最左侧,您将看到一个大纲视图,显示笔尖中包含的所有对象。当此笔尖在运行时加载时,所有对象都将被取消归档并实例化。在您提供的屏幕截图中,您将看到名为“TableArray”的 NSArrayController 已经存在。如果您出于某种原因需要创建另一个控制器,则可以将 NSArrayController 从对象库(右下角)拖到 Interface Builder 文档中。
  2. 在 Interface Builder 中选择“姓氏”表列。您可以通过按大纲视图中的显示三角形直到看到“表列 - 姓氏”或直接在 IB 的主画布区域中选择它来完成此操作。检查器(位于 Xcode 窗口的右侧)现在将反映有关姓氏列的详细信息,因为它是当前选定的对象。选择绑定检查器。您可以将鼠标悬停在检查器顶部的图标上,直到找到标有“显示绑定检查器”的图标 - 这是右侧第二个图标。绑定检查器向您显示所选 NSTableColumn 的所有公开绑定的列表。您将看到“Value”就是这样一种绑定 - 这就是我们想要根据 MyWindowController.m 建立的绑定。旋转“值”旁边的显示三角形以显示所有绑定详细信息。
  3. 现在,您可以指定要通过其建立绑定的控制器以及要使用的控制器/模型关键路径。继续检查“绑定”复选框,然后从“绑定到:”弹出按钮中选择“TableArray”。然后,指定“arrangedObjects”作为控制器键,指定“firstname”作为模型键路径。
  4. 您会注意到输入“名字”会导致 Xcode 出现一个灰色警告图标,并带有工具提示“Xcode 无法解析输入的密钥路径”。 Xcode 将尝试解析您输入的密钥路径。因此,如果您通过包含 Person 类对象的 NSArrayController 进行绑定,并且 Person 类定义了一个名为“address”的属性,则“arrangedObjects.address”将正确解析,并且 Xcode 将验证您的键路径是否正确。但在这个例子中,数组控制器正在管理 NSDictionary 对象,并且 Xcode 无法知道您在这些字典中存储的键/值对。作为开发人员,您应该知道存储在 NSArrayController 中的字典确实包含“名字”/值对,因此您可以忽略该警告。
  5. 对 MyWindowController.m 顶部列出的其他绑定重复此操作。

连接检查器的引用绑定部分向您显示已通过所选控制器建立的所有绑定。因此,如果您选择 TableArray 并导航到连接检查器,您现在将看到“arrangedObjects.firstName” -> 值、表列 - 名字。这向您展示了上面刚刚建立的绑定。

在深入研究像 Cocoa Bindings 这样的更高级的主题之前,有必要熟悉一下 Interface Builder 的使用。使用它可以在 IB 内部以及 IB 与源代码之间创建 IBOutlet 和 IBAction 连接。习惯使用检查器来修改 UI 对象的属性等。一旦您熟悉了 IB 的一般工作流程,处理绑定就会变得更容易。Here's http://developer.apple.com/library/ios/documentation/ToolsLanguages/Conceptual/Xcode4UserGuide/InterfaceBuilder/InterfaceBuilder.html#//apple_ref/doc/uid/TP40010215-CH6-SW1提供帮助的指南。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Xcode 4 中的 Cocoa 绑定 的相关文章

随机推荐