我有NSArrayController
来处理GeometryShape
的实体。
GeometryShape
有:name
,type
,color
。
LineShape
是GeometryShape
,其中包含:beginPositionX
,beginPositionY
,endPositionX
,endPositionY
。
CircleShape
是GeometryShape
,其中包含:positionX
,positionY
,radius
。
NSTableView
显示NSArrayController
中所有插入的形状,其中每列都与arrangedObjects
&关键名称。
当我选择线形时,其属性显示在“线条”选项卡中 - 这是默认选项卡。
现在,如果我选择圆形,我希望选择圆形标签,并显示圆形属性。
...等等,根据我选择的形状类型,将选择相应的选项卡并显示相应的形状属性。
我怎样才能实现这个优秀的:)模型?
答案 0 :(得分:0)
我认为您希望实现NSTableViewDelegate并以编程方式在tableViewSelectionDidChange:
的实现中选择适当的选项卡。当选择更改时,您只需获取tabView的IBOutlet并根据arrayController的选择分配新的selectedIndex。
或者,您可以将tabView的selectedIndex的值绑定到数组控制器的选择,但是您需要一个自定义值转换器,它从选择id
转换为反映适当类的NSUInteger
在任一实现中,您使用isKindOfClass
编写代码并映射到整数。
您也可以将选项卡视图的selectedLabel绑定到selection.class
的数组控制器关键路径,但我猜你仍然需要一个包含NSStringFromClass()
的valuetransformer,如{{3}中所述}。我不完全确定有一种完全非代码方式可以将类转换为可以绑定selectedLabel的字符串。
就个人而言,我不喜欢实现自定义值转换器,因为您正在编写代码以允许实现隐藏在IB中的行为...所有这些都是为了避免编写可能存在于自定义tableview委托中的代码。