分层 NSPopupButton 绑定

Tiered NSPopupButton binding

我正在尝试让两个 NSPopupButton 相互链接,但 'child' 按钮上的绑定有问题。

我有三个 Core Data 实体类型:OrderClientStationStation -> Client是一个many-to-1,所以一个Client有多个Station,但是一个Station只能指向一个客户端.

Order 附加了一个 Station,所以我创建了所有绑定,如下所示。我可以从第一个下拉列表中正确选择任何客户端,但随后站下拉列表只显示当前选择的站。我没有看到所有可用的电台,如果我更改客户端,我也没有看到可供选择的新电台列表。

订单控制器

绑定到视图控制器中 order 实体 属性 的 NSObjectController。

客户端阵列控制器

只需绑定到视图控制器的 managedObjectContext 即可获取所有客户端。

站点阵列控制器

客户端 NSPopupButton

Station NSPopupButton

客户端弹出按钮的selected值是用来过滤站的,应该不会改变订单站的客户端。将客户端弹出按钮的选定索引(而不是选定对象)绑定到客户端阵列控制器,控制器键 selectionIndex,无模型键路径。

将站弹出按钮的选定对象绑定到订单对象控制器、控制器键selection、模型键路径station

当用户select是客户端时,select编辑的站点仍然是订单的站点。如果这个站有不同的客户端,站弹出按钮不会自动 select 另一个站。您可以在客户端弹出按钮的操作中修复此问题。例如:

- (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;
    }
}