NSPopupButton 在 NSTableview 中不起作用

NSPopupButton not working in an NSTableview

我有一个使用 Core Data 的程序,NSTableView 的列通过 NSArrayController 绑定。这没有问题,table 列填充没有问题。我正在扩展 table 以包含 NSPopupButton - 但是添加按钮时会发生一些奇怪的事情。只需将按钮拖到列中,然后 运行 没有连接或绑定到 Popup 的程序,所有其他列都不会正确填充 - 它们只显示默认的占位符文本。

想法?

我可以填充 NSPopupButton,但其他列仍然只显示默认文本。如果我删除 NSPopupButton 一切正常。

为什么其他列会有问题?我尝试添加一个 CheckBox 并遇到同样的问题。我在网上搜索过,但是没有找到答案。

我将不胜感激 thoughts/suggestions。

提前致谢。

[编辑]----

Table 是基于视图的 NSTableCellView

数组控制器:

Table查看:

列:

NSPopupButton:

值:绑定到主控制器,路径:catArrayController.arrangedObjects.name

主控:

IBOutlet:catArrayController 绑定到 IB

中的 catArrayController

对于基于视图的 table 视图,您打算将 table 视图的内容绑定绑定到数组控制器。您 绑定列的值绑定。来自 Table View Programming Guide for Mac: Populating a Table View Using Cocoa Bindings:

Note: In an NSView-based table, you bind the table view’s content to the array controller’s arrangedObjects. This differs from the technique you use if you’re working with an NSCell-based table.

该绑定会导致每个单元格视图将其 objectValue 属性 设置为对应于该行的对象,如果它具有这样的 属性。请注意,单元格视图不会获得特定于列的值。一行中的所有单元格都获得相同的值。

由于您的单元格视图是 NSTableCellView,因此它们具有 objectValue 属性。然后,单元格视图的子视图应该将它们的值绑定绑定到单元格视图,关键路径为 运行ning 通过 objectValue 到特定的 属性(姓名、年龄等) .

在旧的基于 NSCell 的 table 视图中,您通常不会在设计时绑定 table 视图本身的内容(或选择索引或排序描述符)绑定.您将像您所做的那样绑定 table 列。在 运行 时间,table 视图将根据其列的绑定自动为其自己的内容、选择索引和排序描述符建立绑定。我怀疑这种行为的某些版本正在您的应用程序中发生,这使得事情能够正常工作。但是,我怀疑添加新列会破坏该系统。它最初用于基于视图的 table 视图是侥幸,因此本质上是脆弱的。