使表的显示依赖于 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 中,我设置了两个实体,其中一个包含另一个更大分组的成员(例如 cars
和 manufacturers
)。我为每个实体设置了入口页面,它们在那里玩得很好(尝试从下拉菜单中的多对一中进行选择时不会出错)。我现在要做的是更进一步,这样当我在主NSTableView
中选择manufacturer
时,与manufacuturer
相关的cars
列表将出现在第二个NSTableView
中.
我尝试使用类似于我为manufacturer
弹出按钮所做的绑定,从cars
实体提供值,但它只是显示所有car
条目的列表,而不管我选择了manufacturer
。但是,我看不到谓词过滤它的任何选项,如果我将绑定的关键路径设置为manufacturer.cars
,它会显示关系错误。如何过滤子表中显示的内容?
【问题讨论】:
【参考方案1】:有两个 NSArrayControllers。将汽车控制器的contentArray
绑定到制造商控制器;控制器密钥是selection
(即选定的制造商),模型密钥路径是包含制造商汽车的属性的路径。
然后,将汽车表视图的列绑定到汽车控制器arrangedObjects
的属性。
【讨论】:
我正在尝试这个,但它所做的只是导致编辑页面无法正确显示其内容,并且主/子显示上的任何选择在单击后立即消失。在此过程中是否有需要仔细检查的步骤? 是的,仔细检查模型键路径。它们应该看起来像“selection.name”或“selection.brand”。事实上,检查所有名称:例如,实体是否真的称为制造商而不是制造商?另外,检查数据模型中的关系:汽车是一对多的关系,是必需的吗?selection
应该是控制器键,而不是模型键路径的一部分。以上是关于使表的显示依赖于 Interface Builder 中另一个表中的选择的主要内容,如果未能解决你的问题,请参考以下文章