【问题标题】:How to bind different entities with NSTableView and NSTabView?如何用 NSTableView 和 NSTabView 绑定不同的实体?
【发布时间】:2014-04-23 17:29:35
【问题描述】:

我有一个NSArrayController,它处理GeometryShape 的实体。 GeometryShape 有:nametypecolorLineShapeGeometryShape 并具有:beginPositionXbeginPositionYendPositionXendPositionYCircleShapeGeometryShape 并具有:positionXpositionYradius

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

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

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

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

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

【问题讨论】:

    标签: objective-c nstableview cocoa-bindings nsarraycontroller nstabview


    【解决方案1】:

    我认为你想在选择变化时实现nstableViewDelegate和以编程方式选择相应的选项卡,只需抓住TabView的Iboutlet并根据ArrayController的选择分配新的SelectedIndex。

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-20
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多