Objective c 如何使用NSTableView和NSTableView绑定不同的实体?
我有一个Objective c 如何使用NSTableView和NSTableView绑定不同的实体?,objective-c,nstableview,cocoa-bindings,nsarraycontroller,nstabview,Objective C,Nstableview,Cocoa Bindings,Nsarraycontroller,Nstabview,我有一个NSArrayController,它处理GeometryShape的实体。 几何图形有:名称,类型,颜色。 LineShape是一种GeometryShape,具有:beginPositionX,beginPositionY,endPositionX,endPositionY。 圆形是一种几何图形,具有:位置X,位置Y,半径 NSTableView显示了NSArrayController中插入的所有形状,其中每一列都与arrangedObjects键名绑定 当我选择一个线型时,它的属性
NSArrayController
,它处理GeometryShape
的实体。
几何图形
有:名称
,类型
,颜色
。
LineShape
是一种GeometryShape
,具有:beginPositionX
,beginPositionY
,endPositionX
,endPositionY
。
圆形
是一种几何图形
,具有:位置X
,位置Y
,半径
NSTableView
显示了NSArrayController
中插入的所有形状,其中每一列都与arrangedObjects
键名绑定
当我选择一个线型时,它的属性将显示在“线”选项卡中,这是默认选项卡
现在,如果我选择一个圆形状,我希望选择“圆”选项卡并显示“圆”属性
…因此,根据我选择的形状类型,将选择相应的选项卡并显示相应的形状属性
我如何才能实现这个优秀的:)模型
我认为您应该实现一个NSTableViewDelegate,并在
tableViewSelectionDidChange:
的实现中以编程方式选择适当的选项卡。当选择发生更改时,您只需抓取选项卡视图的IBOutlet并根据arrayController的选择分配一个新的selectedIndex
或者,您可以将选项卡视图的selectedIndex的值绑定到阵列控制器的选择,但是您需要一个自定义值转换器,该转换器将选择的id
转换为反映适当类的nsuiger
在这两种实现中,您都使用isKindOfClass
编写代码,并映射到一个整数
您还可以将选项卡视图的selectedLabel绑定到selection.class的数组控制器键路径,但我猜您仍然需要一个valuetransformer包装NSStringFromClass()
,如中所述。不过,我不能完全确定是否有一种完全非代码的方式可以将类转换为可以将selectedLabel绑定到的字符串
就个人而言,我不喜欢实现自定义值转换器,因为您编写的代码允许实现隐藏在IB中的行为。。。所有这些都是为了避免编写可能存在于自定义tableview委托中的代码