问题标签 [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 - Cocoa-Bindings:手动更新 NSObjectController?
在我的小可可应用程序中,我在 NSObjectController 的帮助下将类的属性绑定到了一些文本字段。到目前为止我遇到的唯一问题:在 NSObjectController 使用当前输入更新类之前,您总是必须留下一个文本字段。
如果用户没有离开 texfield 并立即单击保存/提交按钮,这将成为一个问题。该类不包含当前输入。总是坏事。
我正在寻找一种方法来避免这种情况。就像告诉 NSObjectController 获取当前输入,即使用户已经退出了该字段。如果可能的话,我可以在保存之前将此命令放在保存方法中,一切都会好起来的。
cocoa - NSDictionaryController 似乎没有观察到内容字典的变化
我一定遗漏了一些简单的东西,但是我在将 tableView 绑定到 NSDictionaryController 时遇到了一些麻烦。这是我当前方案的模型:
TableViewColumn --bindsTo-->DictionaryController.arrangedObjects.(value or key) --bindsTo-->someClass.someClassMember.aDictionary。
我已经通过在 init 上向 aDictionary 添加一个条目来测试 tableView,它可以正确显示。但是当另一个方法生成一个对象然后添加到 aDictionary 时,TableView 似乎没有更新,甚至不知道 aDictionary 现在有两个条目。我已经尝试了我能想到的一切。我没有直接访问 aDictionary....我已经尝试过(在 someClassMember 中)[self aDictionary setValue:forKey:] 和 [self setValue:forKeyPath:@"aDictionary"] 和类似的变体。键是一个字符串,所以它应该是 KVC/KVO 兼容的,我在 someClassMember 中有'@synthesize'd aDictionary。
我错过了什么?为什么字典的新条目不会出现在 tableView 中?
提前致谢
cocoa - 从阵列控制器中删除实体时如何删除它?
我在与其他两个实体(例如部门和团队)相关的托管对象模型中有一个实体(例如员工)。两种关系都是一对多的(即一个员工必须有一个部门和一个团队,团队和部门有很多员工)。两者可能重叠也可能不重叠(例如,一个团队可能由来自人力资源、会计和 IT 的员工组成,或者它可能仅由一个部门的几名员工组成)。
我有两个 NSArrayControllers 为两个 NSTableViews、一个 Department 表和一个 Team 表提供数据。员工可以在部门之间和团队之间毫无问题地移动,但我不知道如何删除(解雇)员工。
如果我向任一阵列控制器发送删除消息,则员工将被带出团队(例如)但留在部门中,并且对象图处于不一致状态。即使我在两个控制器上调用删除操作,该对象也不会被删除 - 它是孤立的,只是在边缘徘徊。
最初,我将(员工实体的)部门和团队关系设置为 Nullify 的删除规则,但即使将一个或两个更改为级联也无济于事。
我是否需要覆盖数组控制器上的 remove: 操作以实际删除员工,或者我是否遗漏了一些非常明显的东西?
cocoa - 核心数据、NSTableColumn 绑定和自定义 NSCell
我正在尝试使用能够正确绘制托管对象的自定义来显示NSManagedObjects
一个数组。NSTableView
NSCell
就此而言, my 的单列NSTableView
绑定到arrangedObjects
a 的NSArrayController
。我没有在对象上使用任何关键路径。
我的印象是,当表格视图想要绘制特定项目时,我的NSCell
子类会收到一条setObjectValue:
消息,但这并没有发生。但这甚至行不通,因为NSManagedObjects
不符合Copying
协议。
我怀疑这是一项常见的任务,并且必须有一些简单的方法来做到这一点,但我现在真的看不到它。
任何见解将不胜感激。
cocoa - 刷新 Cocoa-Binding - NSArrayController - ComboBox
在我的应用程序中,我做了一个非常简单的绑定。我有一个绑定到 NSArrayController 的 NSMutableArray。控制器本身绑定到一个 ComboBox 并显示 NSMutableArray 的所有内容。工作正常。
问题是:数组的内容会改变。如果用户对应用程序进行了一些调整,我会删除 NSMuteableArray 中的所有项目并用新的和不同的项目填充它。
但是 NSMutableArray <-> NSArrayController <-> NSComboBox 的绑定不会刷新。
无论我是否从 Array 中删除所有对象,ComboBox 仍然显示相同的项目。
这里有什么问题?我的方法是错误的还是我只需要告诉绑定刷新自己?我不知道该怎么做。
cocoa - 没有数组的 NSArrayController
我刚刚意识到有两种方法可以使用 NSArrayController。
将 Controller 绑定到 Array 并将对象添加到 Array。或者根本不使用任何数组,直接将对象添加到控制器。
或者
由于这两个版本都可以很好地满足我的需求,我想知道哪种方法是正确的使用方法。我想使用 Array 可能会更好,但既然 NSArrayController 也能够存储数据,为什么我不应该使用这个功能呢?
cocoa - Cocoa-Bindings:将 NSComboBox 选择绑定到 NSObjectController 中的字段
在我的应用程序中,我有一个 NSObjectController 绑定到用户界面上的所有控件。到目前为止,这工作正常。我唯一的问题是将 NSComboBox 的选择绑定到同一个 ObjectController。据我今天发现,ComboBox 的值始终是一个字符串,因此 OBjectController 类中的字段也是一个 NSString.Sounds 对我来说很容易但不起作用。
我总是得到一个“ ......类与键的键值编码不兼容...... ”
ComboBox 本身中的项目来自另一个控制器,一个 NSArrayController。但这部分工作正常。Array 中的所有项目都是 ComboBox 中的项目。我遇到的问题是将选择放入 ObjectController。
cocoa - NSTableView 和 NSCollectionView 的区别
我正在尝试决定开发我的 Snow Leopard 应用程序的路径。首先,我应该先介绍明显的区别:
NSTableView
可以有多列数据来表示数据(一行)的同一“元素”的不同部分,其中NSCollectionView
也可以显示数据网格,但每行+列组合都是它自己的元素。出于我的目的,假设我正在处理一个列。
据我所知,
NSCollectionView
物品都是NSView
s ,它们都必须具有相同的尺寸。此外,与 不同NSTableView
,collectionview 项目被复制到NSCollectionView
而不是根据需要由 a 提供dataSource
(我对此不确定,如果我错了,请纠正我)。NSTableView
NSCell
如果您决定自定义行的显示,则使用s。NSCell
不是一个,如何处理事件(如果NSResponder
我想向单元格添加某种附件,例如 iTunes 中的箭头如何工作(尽管 iTunes 是 Carbon)。我NSCell
在 IB 中看到了一些出现的子类是他们NSControl
兄弟的等价物,但是如果我想MySweetView
在一个对象中有对象NSCell
呢?)。两者在 Bindings 方面的工作似乎大致相同,对吗?
最后,
NSCollectionView
似乎可以很好地使用其元素的动画(例如用于重新排列项目或过滤它们)。可以NSTableView
用它的行做到这一点吗?
还有什么我应该考虑的吗?
cocoa - Cocoa:从磁盘取消归档数据后刷新 NSObjectController
我有一个使用 NSObjectController 绑定到用户界面的对象。我可以归档对象并稍后取消归档。到目前为止,这工作正常。在调试器中,我可以看到该对象包含我在上一个会话中保存的数据。剩下的问题是:用户界面不刷新。我想我必须以某种方式告诉 NSObjectController 他必须处理另一个对象。但我不知道怎么做。我尝试了 newObject 但这根本不起作用。
目前我的代码如下所示:
rpgCharacter 应该是 myCharacterController 的对象。
cocoa - 使用 Interface Builder 按日期范围获取数据
我有一个使用典型 IB 和数据绑定完成的 NSTableView。它运作良好。
但是我需要放入一个分段控件来指示日期范围。例如,如果用户点击“去年”分段控制按钮,表格应该只显示去年的记录。
我查看了 IB 中 NSArrayController 的数据绑定选项,但我不知道该怎么做。
有人可以指出我正确的方向吗?
*更新:
我正在开发的应用程序有 3 个 SegmentedControl 按钮——“今年”、“去年”、“总计”,以及一个显示与用户选择的年份选择相关的记录的表格视图。因此,选择“今年”将重新加载带有当年记录的表格视图,选择“去年”将重新加载表格以显示去年的记录。