gpt4 book ai didi

cocoa - "Content Values"和 "Content Objects"有什么区别

转载 作者:行者123 更新时间:2023-12-03 16:01:58 26 4
gpt4 key购买 nike

我现在正在探索绑定(bind),并且有一个 NSPopUpButton -

它为我提供了一些值选择下的绑定(bind)选项 - Content , Content Objects , Content Value s,然后是 Selected Object , Selected Value,Selected Tag .有人可以解释一下这些之间的区别吗?

最佳答案

这些在 Cocoa Bindings Reference for NSPopUpButton 中进行了解释,尽管该引用并不十分清楚。
Content 是一个数组 Controller ,为弹出按钮提供元素。数组 Controller 应该绑定(bind)到一个数组。为了确定数组中的每个元素如何在弹出按钮中显示,-description 被发送到数组中的每个对象。

您可以通过两种方式进行自定义:

  • 如果您希望 Selected Object 绑定(bind)提供一个与由 Content 绑定(bind)到的数组 Controller 管理的数组元素不同的对象,您可以将 Content Objects 绑定(bind)到另一个数组 Controller 。它也可以是相同的阵列 Controller ,但具有不同的键路径;
  • 如果您希望弹出按钮选项与数组中每个元素的描述不同.它也可以是相同的阵列 Controller ,但具有不同的键路径。

  • 一个简单的例子:假设你有以下类:
    @interface Customer : NSObject
    @property (copy) NSString *name;
    @property (copy) NSString *phoneNumber;
    @end

    而且您还没有覆盖 Content 方法。在这种情况下, Content Values 是无用的,而 -description 属性将是弹出选项的不错选择。你会绑定(bind):
  • -description 到管理 name 实例数组的阵列 Controller , Controller key Content
  • Customer 到同一阵列 Controller , Controller key arrangedObjects ,模型 key 路径 Content Values

  • 然后,您可以将 arrangedObjects 绑定(bind)到其他内容,例如应用程序委托(delegate)或窗口 Controller 中的属性。然后 Cocoa 绑定(bind)会将选定的 name 实例分配给该属性。

    现在假设您对被选中的整个 Selected Object 对象不感兴趣,而只对它的电话号码感兴趣。在这种情况下,您可以将 Customer 绑定(bind)到相同的阵列 Controller , Controller 键 Customer ,模型键路径 Content Objects 。选择弹出选项时,Cocoa绑定(bind)将设置 arrangedObjects而不是整个 phoneNumber实例。综上所述:如果不绑定(bind) phoneNumber ,则 Customer 代表数组中的原始对象。如果绑定(bind) Content Objects ,那么 Selected Object 可能会有所不同。

    如果您对原始对象(或内容对象)不感兴趣,您将绑定(bind) Content Objects,但根据 Selected Object 绑定(bind)显示在弹出选项中的实际字符串。

    为弹出按钮提供数据的快速方法:
  • 如果您有代表弹出选项的对象(不仅是字符串),则绑定(bind) Selected Value
  • 如果通过向数组元素发送 Content Values 无法通过 Content 获得向用户显示的选项,则绑定(bind) Content Values
  • 如果您希望 Content 返回与 -description 中的数组元素不同的内容,请绑定(bind) Content Objects

  • 在弹出按钮中获取当前选择的快速方法:
  • 如果您想知道代表当前弹出选择的完整对象(从 Selected ObjectContent ),则绑定(bind) Selected Object
  • 绑定(bind) Content 如果您只想要当前在弹出窗口中选择的字符串。

  • 最后,如果弹出选项实际上是从其项目具有标签集的菜单中获取的,则您将使用 Content Objects

    关于cocoa - "Content Values"和 "Content Objects"有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7937280/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com