问题标签 [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 - 将 NSColorWell 绑定到 NSTextField
我正在尝试将 NSColorWell 绑定到 NSTextField 值并实现 NSFormatter 子类。NSColorWell 绑定到应用程序委托中的 ivar,该委托也绑定到 NSTextField。有一个 NSFormatter 将 [NSColorWell 颜色] 转换为描述性字符串。
当 UI 焦点在 NSTextField 上时,它根本不会更新;但是当焦点在另一个 NSTextField 上时,它确实如此。
我了解 KVO/KVC、绑定等,但想知道 IB 中是否有我遗漏的“陷阱”。
cocoa - Cocoa核心数据自引用接口构建器问题
我无法理解如何在界面生成器中进行以下工作。
我创建了一个核心数据模型类“Person”,它具有许多属性(名字、姓氏等)以及与其他人(朋友)的关系。
从概念上讲,这非常简单。然而,弄清楚如何让这个在 IB 中发挥作用被证明是棘手的。
我创建了一个界面,在窗口左侧有一个表格,列出了所有人。右侧是用于输入人员详细信息的字段。
我想要一个较小的表格,在右侧显示“朋友”以及添加和删除按钮。单击添加按钮将启动一个带有搜索功能的小面板,用于过滤列表,以便您可以选择一个人,然后将其添加到“朋友”集中。
任何人都可以给我一些建议或指出一个我可以看到的例子吗?
在此先感谢,马特
objective-c - NSTableView,多个单元格和绑定
我正在尝试创建一个类似于 Motion 的属性视图的视图。
我的每个属性对象都包含它想要显示的单元格类型的定义。但同时,我想使用绑定,以便自动更新值,因为它们可以在其他地方更改。
我尝试了几种不同的方法来解决这个问题。
多个单元格,
dataCellForTableColumn:
虽然这允许对所有单元格类型正确进行渲染,但我失去了绑定。NSProxy:我也尝试过使用代理对象,我认为它会将所有方法转发到它后面的选定单元格类型,但同样,绑定在这里似乎不起作用。
以前有没有人遇到过这种问题?或者这是绑定不会削减它的情况之一,我需要自己做繁重的工作?
干杯!
objective-c - 在用另一个相同类型的实例替换目标对象的实例后如何保持 Cocoa 绑定工作?
我希望能够使用绑定来使我的 GUI 与动态加载的对象保持同步,但是一旦我用另一个相同类型的对象替换有问题的对象,绑定就会中断并且 GUI 停止更新。这里有一些代码可以帮助你理解我的意思:
在我的界面中,我有一个实例变量来保存有问题的对象:
然后在我的实现中实例化对象:
在 Interface Builder 中,我将文本字段的“值”绑定到“anObject.textValue”。
当我调用此方法时:
然后文本字段更新以反映新值。
但是我想要做的是显示在应用程序的其他地方做一些工作后给出的对象的值。所以我做的是这样的:
现在这个操作的结果似乎打破了从 GUI 到 CustomObject 实例 (anObject) 的绑定,考虑到绑定的对象已被另一个实例替换,这似乎是合乎逻辑的。
我想知道的是,是否有一种方法可以使绑定与动态创建的 CustomObject 实例保持功能,而不必以编程方式重新绑定每个控件bind:toObject:forKeyPath:options:
或类似的方法,这将需要(据我所知)使用 IBOutlets 来获得握住控件然后能够将它们绑定到我的新对象中的值(IMO这将使绑定在我的情况下无用)。这是唯一的解决方案还是有更好、更清洁的方法来处理这个问题?
我在developper.apple.com 和其他地方阅读了很多关于绑定的文档,但我没有找到任何似乎谈论这个特殊情况的东西。
在此先感谢您的时间!
objective-c - 使用 nil minValue 将 NSSlider 绑定到 NSTextField?
我有一个 NSLider 绑定到文本字段以显示滑块给出的值。一切正常,但我希望 NSSlider 将“nil”作为 minValue 发送到对象。
例如,我可以在保存(到属性列表)时将其转换为 nil:
但是我想在应用程序运行时应用相同的行为,因为只有当“myObj”的值为 nil 时才会启用其他一些字段(通过绑定)。问题是 NSSlider 总是返回“0”,并且 NSSlider 不接受 minValue=nil。
在此先感谢,罗南。
objective-c - 帮助键值观察
我需要一些关于 KVO 的帮助,我已经完成了一半。我要做的是在树控制器中的某些内容发生更改时触发一个方法。
所以我正在使用此代码注册为 KVO。
但是当我观察到的关键路径发生变化时,我如何触发一个方法?
一个额外的问题,当我将自己添加为观察者时,我希望关键路径成为我的核心数据模型中的一个属性,我做得对吗?
cocoa - 绑定到 NSViewController 的代表对象
(摘要:绑定在代码中起作用,但在 IB 中不起作用)
我有一个由 NSWindowController 管理的窗口。窗口左侧是源视图。右侧是一个表格视图,显示当前所选源的元素。
我已经在我的窗口 XIB 中设置了一个 NSTreeController。我希望它的内容用于源视图。它的选择将驱动表格视图。
我正在尝试使用 NSViewControllers 将其拆分。一个视图控制器将加载一个包含源视图的 NIB。另一个视图控制器将加载表格视图。
看到我需要访问源视图控制器中的 NSTreeController,我将其设置为视图控制器的代表对象。(实际上,要在视图控制器上调用 awakeFromNib 时完成此设置,我已将代表对象转换为 IBOutlet)。
当我在代码中连接我的源视图时,一切正常:
但是,我无法使用 Interface Builder 重现这一点。问题是,这里的“控制器键”文本字段是灰色的。因此,我使用“representedObject.arrangedObjects.title”的模型 keyPath 将列的“值”绑定到文件所有者。这没有显示所需的行为。实际上抛出了一个异常:-[NSProxy doesNotRecognizeSelector:_mutatingNodes] called!
如何在 IB 中使用代表对象?我可以在 IB 中创建一个控制器来充当代表对象的代理吗?我可以在源视图 XIB 中设置一个树控制器,在 NIB 加载期间它被替换为代表对象吗?
cocoa - Cocoa 绑定(文件所有者与应用程序委托)
我刚开始使用 Cocoa Bindings,并且正在开发我的第一个应用程序。
许多示例和书籍使用 .NSArrayController
但由于我只想将单个对象及其属性绑定到一些文本字段,因此我使用了NSObjectController
. 我也没有基于文档的应用程序。我的应用程序是一个简单的单窗口应用程序。
NSObjectController
当我尝试像所有示例一样将我的文件所有者绑定到文件所有者时,我开始遇到问题。如果我这样做,我将无法编译应用程序。我总是收到“此类不符合键值”错误。
但是,如果我将 绑定NSObjectController
到我的应用程序的 AppController 实例,它工作得非常好。我还设法将 Textfield 绑定到NSObjectController
. 这也可以正常工作。
但我不知道我是否做对了。我发现的所有样本都绑定到文件所有者——这对我的应用程序不起作用。绑定到应用程序控制器似乎是非基于文档的应用程序的完美方式。
cocoa - 绑定包含 NSPopUpButtons 的表列
我有一个表,其中一列使用 NSPopUpButtonCell。尽我所能,我似乎无法弄清楚以我想要的方式正确绑定所有内容的方法。这是我正在尝试做的事情:
我有一个 NSArrayController 从托管对象上下文中提取项目,称为“字段值”。这将用于填充每个项目的弹出菜单(即可用选项列表)。我可以通过选择 IB 中的单元格并将其内容/对象/值绑定到 'Field Values'.arrangedObjects 和 'Field Values'.arrangedObjects.name 来绑定它(以获取表示的对象和可见标题)。
然后我想以这样一种方式绑定列,即每行中的选定值来自我的控制器类中的一个数组,再次使其可见(并且只能通过编辑)另一个 NSArrayController。
到目前为止,我已经设法将其设置为每个弹出菜单都包含可用字段的列表,并且在每个弹出菜单中都选择了默认值。然而,实际上选择一个项目没有任何影响——它只是恢复到它的初始值。我还设法找到了其他一些变体,例如使用所选值填充的菜单,或包含所有可用值的名称,以及包含-description
我添加的“无”值的选择。
我确定我错过了一些相当简单的东西,但我不确定它是什么。大概在如何绑定此类数据(即内容与内容对象与内容值的东西)方面我错过了一些微妙之处,但如果我现在能看到它,我该死的。
非常感谢提前:o)
cocoa - 在 Xcode Document App 中:为什么 MyDocument 的 init 方法会被调用两次?
我按照 Hillegass 的第 8 章在那里实现了 RaiseMan 应用程序。然后我决定按照相同的过程在我正在学习的 Cocoa 编程类中实现一个练习的代码,但是在构建和运行之后我得到了以下非常神秘的错误消息。
无法从类 _NSControllerObjectProxy 的对象 <_NSControllerObjectProxy: 0x100460e30> 创建 BOOL
我不知道这个错误信息是什么意思。进行谷歌搜索带来了一些点击,但他们的补救措施似乎是做我已经在做的事情。
我盯着我在 Interface Builder 中所做的所有连接和分配,没有任何明显的错误。
所以我进入调试器并在 MyDocument 类的 init 方法中设置了一个断点,它被调用了两次。怎么会这样?我应该寻找什么会使 init 方法被调用两次?堆栈跟踪显示 init 是由我们自己编写的系统函数调用的。
为了比较,我回到了 Hillegass 第 8 章之后的项目,并在 MyDocument 类的 init 方法中设置了一个断点,并且它被调用了一次(这是人们所期望的)。