使表的显示依赖于 Interface Builder 中另一个表中的选择

Posted

技术标签:

【中文标题】使表的显示依赖于 Interface Builder 中另一个表中的选择【英文标题】:Making a table's display dependent on the selection in another table in Interface Builder 【发布时间】:2009-12-18 10:06:52 【问题描述】:

我设置了一个带有两个 NSTableView 的窗口。在 Core Data 中,我设置了两个实体,其中一个包含另一个更大分组的成员(例如 carsmanufacturers)。我为每个实体设置了入口页面,它们在那里玩得很好(尝试从下拉菜单中的多对一中进行选择时不会出错)。我现在要做的是更进一步,这样当我在主NSTableView 中选择manufacturer 时,与manufacuturer 相关的cars 列表将出现在第二个NSTableView 中.

我尝试使用类似于我为manufacturer 弹出按钮所做的绑定,从cars 实体提供值,但它只是显示所有car 条目的列表,而不管我选择了manufacturer。但是,我看不到谓词过滤它的任何选项,如果我将绑定的关键路径设置为manufacturer.cars,它会显示关系错误。如何过滤子表中显示的内容?

【问题讨论】:

【参考方案1】:

有两个 NSArrayControllers。将汽车控制器的contentArray绑定到制造商控制器;控制器密钥是selection(即选定的制造商),模型密钥路径是包含制造商汽车的属性的路径。

然后,将汽车表视图的列绑定到汽车控制器arrangedObjects 的属性。

【讨论】:

我正在尝试这个,但它所做的只是导致编辑页面无法正确显示其内容,并且主/子显示上的任何选择在单击后立即消失。在此过程中是否有需要仔细检查的步骤? 是的,仔细检查模型键路径。它们应该看起来像“selection.name”或“selection.brand”。事实上,检查所有名称:例如,实体是否真的称为制造商而不是制造商?另外,检查数据模型中的关系:汽车是一对多的关系,是必需的吗? selection 应该是控制器键,而不是模型键路径的一部分。

以上是关于使表的显示依赖于 Interface Builder 中另一个表中的选择的主要内容,如果未能解决你的问题,请参考以下文章

使表列宽度相同

如何在 Bigquery 查询中使表可选

如何在 where() 函数中给出条件以使表中的记录不等于零

SQL - 依赖于 2 个表的查询?

依赖于多个表的可更新视图

如何在同一高度的textFrame中获取两个表