我试图让两个相互关联的NSPopupButton与“孩子”上的绑定有问题。按钮。
我有三种核心数据实体类型:Order
,Client
和Station
。 Station
- > Client
是多对一的,因此Client
有多个Station
,但Station
只能指向一个客户。
Order
附加了一个Station
,因此我创建了所有绑定,如下所示。我可以从第一个下拉列表中正确选择任何客户端,但是站点下拉列表只显示当前选定的站点。我没有看到所有可用的电台,如果我更换了客户端,我就看不到可供选择的新电台列表。
订单控制器
NSObjectController绑定到视图控制器中的order
实体属性。
客户端阵列控制器
只需绑定到视图控制器的managedObjectContext即可获取所有客户端。
电台阵列控制器
客户NSPopupButton
Station NSPopupButton
答案 0 :(得分:0)
客户端弹出按钮的选定值用于过滤站点,它不应该更改订单站点的客户端。将客户端弹出按钮的选定索引(而不是选定对象)绑定到客户端阵列控制器,控制器密钥selectionIndex
,无模型密钥路径。
将电台弹出按钮的选定对象绑定到订单对象控制器,控制器键selection
,模型关键路径station
。
当用户选择客户端时,所选站仍然是订单的站。如果此工作站具有不同的客户端,则工作站弹出按钮不会自动选择另一个工作站。您可以在客户端弹出按钮的操作中修复此问题。例如:
- (IBAction)clientAction:(id)sender {
NSArray *stations = self.stationArrayController.arrangedObjects;
if (![stations containsObject:order.station]) {
if (stations.count > 0)
self.order.station = stations[0];
else
self.order.station = nil;
}
}