0

我有一个NSArrayController处理GeometryShape. GeometryShape有:name, type, color. LineShape是一个GeometryShape并且有:beginPositionX, beginPositionY, endPositionX, endPositionY. CircleShape是一个GeometryShape并且有:positionX, positionY, radius.

显示NSTableView中的所有插入形状NSArrayController,其中每列与arrangedObjects键名绑定 &。

当我选择一个线条形状时,它的属性显示在线条选项卡中 - 这是默认选项卡。

现在,如果我选择一个圆形,我希望选择“圆形”选项卡并显示圆形属性。

…因此,根据我选择的形状类型,将选择相应的选项卡并显示相应的形状属性。

我怎样才能实现这个出色的:) 模型?

在此处输入图像描述

4

1 回答 1

0

我认为您希望实现一个 NSTableViewDelegate 并以编程方式tableViewSelectionDidChange: 在选择更改时的实现中选择适当的选项卡,您只需获取 tabView 的 IBOutlet 并根据 arrayController 的选择分配一个新的 selectedIndex 。

或者,您可以将 tabView 的 selectedIndex 的值绑定到数组控制器的选择,但您需要一个自定义值转换器,将选择转换为id反映NSUInteger适当类的值。

在任一实现中,您都在使用整数编写代码isKindOfClass并将其映射到整数。

您也许还可以将选项卡视图的 selectedLabel 绑定到数组控制器的键路径,selection.class但我猜您仍然需要NSStringFromClass()如文档中所述NSValueTransformervaluetransformer 包装。不过,我不完全确定是否有一种完全非代码的方式可以将类转换为可以将 selectedLabel 绑定到的字符串。

就个人而言,我不喜欢实现自定义值转换器,因为您正在编写代码以允许实现隐藏在 IB 中的行为......所有这些都是为了避免编写可能存在于自定义 tableview 委托中的代码。

于 2014-04-23T20:05:53.757 回答