问题标签 [cocoa-bindings]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cocoa - 在核心数据模型中存储 NSImage
在核心数据模型中存储 NSImage 的正确方法是什么?我假设向实体添加属性并为其指定“二进制”类型应该可以工作,但它不起作用。我有一个包含 NSImageCells 列的表,它没有显示任何内容。
cocoa - 绑定自定义 NSView:是否需要创建 IBPlugin?
我创建了一个 NSView 的子类来将图像绘制为模式:
我实现了以下内容来公开绑定:
不幸的是,图像绑定没有显示在 Interface Builder 中。
我真的必须创建一个 IBPlugin 才能在 Interface Builder 中公开绑定吗?对于我不打算重用的自定义视图来说,这似乎有点过头了。
cocoa - 根据计算值为计算值设置 KVO
所以我有两个对象,Invoice 和 InvoiceLineItem。InvoiceLineItem 有一个名为的属性cost
,它是基于其他属性动态创建的。为了帮助我使用 KVO/绑定:
这很好用。当我编辑像 serivceCost 这样的属性时,表视图中的主要成本会更新得很好。
在 Invoice 对象中,我有一个 InvoiceLineItems 的 NSMutableArray。Invoice 有一个类似的属性,称为totalCost
. 它是通过迭代行项目来计算的,只要行项目没有被标记为已删除(我这样做是出于同步原因),它就会将成本相加并创建总成本。
现在我的问题/问题。如何设置 Invoice 的 totalCost 以便在行项目的成本之一发生更改时它与 KVO/绑定一起使用?
我尝试设置:
但它不起作用。我最终在控制台中出现错误:[<NSCFArray 0x1499ff40> addObserver:forKeyPath:options:context:] is not supported. Key path: cost
cocoa - NSTableView 和 NSOutlineView 拖放
我有一个 NSTableView 和一个 NSOutlineView,它们的内容都由绑定提供,我想要一些拖放功能:
将表 A中的行拖到大纲 B 的一行中,在那里它们将被复制到大纲 B 中的行所代表的数据结构中。
将大纲 B 中的一行拖到大纲 B中的另一行上,这会将第一行表示的数据复制到第二行表示的数据中。
我已经阅读了Apple 的拖放文档,但几乎一无所获。它似乎并不适用于我需要做的事情。我错过了什么?
cocoa - Cocoa 绑定到数组控制器中的特定项目
是否可以使用NSArrayController
将 aNSTextField
的值绑定到数组中的特定项目?特别是,我想绑定到数组中第一项的属性,如果数组为空,则不显示任何内容。
使用arrangedObjects.command
仅显示“(” - 大概它试图为每个项目显示一个带有逗号分隔字符串的多行字符串。我只想要第一个。
objective-c - 如何将对象添加到以编程方式绑定的 NSMutableArray?
我有一个具有以下结构的 NSDocument:
我在 MyDocument.xib 中实例化了 NSArrayController 和 MyView,并与文件的所有者 (MyDocument) 建立了连接,所以我很确定从 Interface Builder 的角度来看,我已经正确地完成了所有操作。
MyView 的界面很简单:
现在,在 中MyDocument windowControllerDidLoadNib
,我有以下代码:
在调试器中,我已经验证了它myViewArray
是一个 NSControllerArrayProxy,所以看起来我的编程绑定是正确的。但是,当我尝试将 MyView 方法中的对象添加到 MyViewmyViewArray
时,它们似乎不会更新 MyDocument 的myArray
. 我尝试了以下两种方法:
(正如预期的那样,第二种方法会导致编译器错误,但我认为根据我对 KVO 的有限理解,Objective-C 运行时会“实现”此方法。)
我尝试更新的方式有问题myViewArray
吗?我的编程绑定有问题吗?(我正在尝试以编程方式执行此操作,因为 MyView 是自定义视图,我不想为其创建 IB 调色板。)
objective-c - 使用我自己的(不是共享的)NSUserDefaults 对象的 KVO 和绑定问题
我在我的应用程序中继承 NSUserDefaults。这样做的副作用是我不能使用[NSUserDefaults sharedUserDefaults]
,我必须有一个类方法来提供我自己的静态默认对象。这在代码中不是问题,但现在证明我正在将首选项 UI 与绑定连接起来很棘手。
共享的 NSUserDefaultsController 使用共享的默认值,所以就不行了。相反,我可以在我的窗口控制器中创建我自己的默认控制器,为它提供我的静态默认对象,并将我的绑定连接到它。但是,这并不完全有效。当我尝试在我的默认对象上使用 KVO 时,我没有收到任何更改通知。我使用常规的 NSUserDefaults 对象(不是子类)再次尝试了此操作,并且再次没有 KVO 通知。替换为共享默认对象,KVO 完全按照我的预期工作。
当我不使用共享默认值时,是否有人对我如何让绑定和 KVO 工作有任何想法?
cocoa - 是否可以使用 Cocoa 的 Bindings 将可编辑的 NSTableView 连接到 NSMutableArray?
从我可以拼凑起来的点点滴滴看来,这个答案将是“不”,所以我将广泛地解释在我试图敲定的(可能的)情况下我想要实现的目标一个螺丝。
我的应用程序中有一个要读入的有效文件扩展名列表,我正在通过一个目录对其进行递归。我希望这是一个偏好,所以我有以下内容:
我将 NSTableView 绑定到 NSArrayController 绑定到共享用户默认控制器...
拥有用户可自定义的有效扩展列表是完全错误的方法吗?我是否误解了 NSUserDefaults 的作用?
objective-c - 填充 NSTableView 后禁用自动选择行
我有两个 NSTableViews 填充了使用绑定链接的核心数据。当在 NSTableView1 中选择一行时,将填充 NSTableView2 并选择其中的第一行。我已经在它的 selectionIndex 上注册了与 NSTableView2 对应的 NSArrayController 和 KVO。这样当在 NSTableView2 中选择一行时,就会运行一个方法。我的问题是,当在 NSTableView1 中选择一行时,选择 NSTableView2 中的第一行来触发该方法。我想要它,以便我可以在 NSTableView1 中选择一行并填充 NSTableView2,而无需在 NSTableView2 中自动选择一行。这是如何实现的?
objective-c - 在数组控制器上使用谓词过滤相关对象
我有一个使用核心数据和绑定的应用程序。我想要一个 NSSearchField 可以搜索绑定到 NSTableView 的 NSArrayController。数组控制器包含具有“名称”字段的核心数据对象。我已经像这样设置了 NSSearchField:
这行得通。我想扩展它,以便它可以搜索与数组控制器中的对象相关的对象字段。数组控制器中的每个对象都与另一种称为“tag”的对象具有一对多关系,该对象具有一个名为“name”的字段。我尝试了以下方法:
然而,这不起作用。当文本输入到 NSSearchField 中时,NSTableView 中什么也没有发生。它有什么问题?