问题标签 [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 - 如何为 NSApp.dockTile 的创建绑定
在 IB 中,很容易将标签或文本字段绑定到某个控制器的 keyPath。
NSDockTile(可通过 [[NSApp dockTile] setBadgeLabel:@"123"] 获得)未出现在 IB 中,我无法弄清楚如何以编程方式绑定其“badgeLabel”属性,就像您可能绑定标签/文本字段/表格列一样.
有任何想法吗?
cocoa - 如何使 NSTokenField 的值绑定提供 NSString?
我已经用 an 替换了NSTextField
anNSTokenField
以便我可以执行一些自动完成。的值NSTextField
绑定到NSString
控制器类的属性。现在我已将 更改NSTextField
为 anNSTokenField
值已更改为NSArray
。
如何使NSTokenField
值绑定成为一个NSString
?
将值从 an 更改NSString
为 anNSArray
似乎是糟糕的 OO 设计。我认为子类应该能够在不修改子类的情况下替换超类。
objective-c - 从多个 XIB 中使用一个 NSArrayController
我在不同 XIB 中定义的两个窗口中显示一个 NSArrayController 的内容时遇到了一些问题。
在我的主窗口中(在 MainMenu.xib 中),我有一个 NSTableView 绑定到 NSArrayController
在我的第二个 XIB 中,我有另一个包含 NSTableView 的窗口。我创建了一个新的 NSArrayController,并将表绑定到该 NSArrayController 的内容。
两个 NSArrayController 都绑定到完全相同的 NSArray。
一开始一切都很好,但问题是如果在主窗口中使用 NSArrayController 将对象添加到数组中,则辅助窗口的数据视图不会更新。这很可能是因为它不知道自己需要更新自己,因为它的 NSArrayController 没有用于添加新对象。
我想做的是在两个窗口中使用完全相同的 NSArrayController 实例。这样,如果将对象添加到数组中,两个视图都将收到更改通知。
问题是我无法弄清楚如何在 Interface Builder 中执行此操作。我无法将 NSArrayController 绑定到另一个 NSArrayController(我收到一个运行时错误,表明它只能绑定到 NSArray)。将 NSArrayController 连接到 File's Owner 的 NSArrayController 成员也无济于事,因为这只会清除我希望它使用的 NSArrayController。
我想我可以自己在代码中设置绑定,但如果可能的话,使用 Interface Builder 似乎会更好。有没有办法在 Interface Builder 中做到这一点,或者可能有更好的方法来一起设置?
更新:针对 Chuck 的回答和评论,我尝试了以下操作: - 将我的 NSTableView 的表格内容绑定到 NSArrayController 成员的排列对象(如果我使用 NSArrayController 本身,日志中出现错误:“[NSArrayController count] : unrecognized selector sent to instance") - 将表中的每一列绑定到文件的所有者,模型键路径为 arrayController.arrangedObjects.propertyName
这仍然没有导致表的内容得到更新。我认为这是因为我绑定到 NSArrayController 的排列对象,而不是绑定到 NSArrayController 本身。但是,如果我直接绑定到 NSArrayController,那会给我带来错误。
通常,我会从“绑定到”组合框中选择我的 NSArrayController,使用排列对象作为控制器键,并将属性本身作为模型键路径。我不确定在这种情况下如何做同样的事情——如果可以的话。
我在上面的过程中做错了吗?
cocoa - 删除正确选择的 NSManagedObjects
看看这个很棒的截图,我想你可以想象我会问什么......
截图 http://a4.s3.p.quickshareit.com/files/screenshot_75d0fc54a05ec7eae3f410.png 玩家:
右侧:首选项面板和
NSTableView
左侧:带有 a 的主窗口NSPopUpButton
(在NSMenu
;] 下)
弹出窗口的选定对象绑定到 tableview 中的其中之一。当我从表格视图中删除(在选定的弹出窗口中)对象时,会出现这个丑陋的东西(你可以在那里看到)。我正在使用 CoreData 并且 NSArrayController 绑定到一个实体。
我发现了 2 件有趣的事情:
首先,我知道有人从 tableview 中删除了一个项目;不幸的是,第二个对我的问题不起作用......
那么知道如何炸掉这个丑陋的东西吗?=D
顺便说一句:如果你对这个不错的应用程序和原生 URL 缩短器感兴趣,你应该看这里。
cocoa - observeValueForKeyPath:ofObject:change:context: 不适用于数组
我有一个对象,它为一个名为contents
. 在那些访问器中,当我修改底层数组时,我调用willChange:valuesAtIndexes:forKey:
了didChange:valuesAtIndexes:forKey:
。
我还有一个自定义视图对象,它contents
通过NSArrayController
. 在我见过observeValueForKeyPath:ofObject:change:context:
的变化字典中唯一的值是. 当我向数组添加对象时,我希望看到.NSKeyValueChangeKindKey
NSKeyValueChangeSetting
NSKeyValueChangeInsertion
正如您想象的那样,每次插入单个项目时重新创建它观察到的对象的视图的内部表示 - 特别是当我批量加载数百个项目时 - 会带来相当大的性能问题。每次添加或删除单个项目时,Cocoa 似乎都认为我正在设置一个全新的数组,我做错了什么?
objective-c - 是否可以在 Cocoa 中绑定 null 占位符?
nil
我有一个表格,其中某些单元格将为零,直到用户填写它们,但我希望我可以根据其他部分更改空占位符(即当该单元格的特定值为 时它显示的值)用户已经填写或配置的应用程序。有点像自动完成,但不完全是。
是否可以绑定空占位符值,或者我必须手动模拟这种行为?
编辑:
为了澄清,我正在寻找一种解决方案,为单个单元格提供不同的占位符值,而不是单个占位符值应用于整个表格或整个表格列。
objective-c - 将两个不同的模型键路径绑定到同一个 NSArrayController 选择
假设我有以下字典数组:
如何将fullName
值绑定到 NSPopUpButton 控件的值,但将选择绑定isoName
到 NSUserDefaults?我有一个使用上述数组设置的 NSArrayController,并且我的 NSPopUpButton 绑定到此控制器,模型键路径为“fullName”,但我想将其保留isoName
在 NSUserDefaults 中。这可能吗?有没有更好的方法来解决这个问题?
objective-c - 什么最能描述 Objective-C 和 Cocoa 绑定?
我很难理解 Cocoa Bindings。有人能以人类可感知的方式向我解释这一切是什么吗?
cocoa - Interface Builder > Inspector > Bindings 中的“Controller Key”是什么意思?
我在文档中找不到他们解释所有这些字段及其含义的地方。特别是“控制器密钥”我不清楚。
cocoa - Inspector > Bindings 窗格中 IB 中的“Controller Key”属性有什么意义?
苹果 说:
NSController 对象的属性。绑定到 NSController 对象时,您可以使用此字段选择键路径中的第一个条目。为方便起见,与此字段关联的菜单显示所选控制器对象上可用的属性。您可以键入属性的名称,或者直接从提供的列表中选择它。
有人可以换句话说解释吗?