Cocoa绑定缺少NSTableColumn单元格标题

时间:2014-06-22 00:12:17

标签: cocoa nstableview cocoa-bindings

我的应用程序中有以下模型。

  • Board,拥有类型为lists的NSMutableArray属性List
  • List,持有
  • 下面的卡类型的NSArray属性cards
  • Card,具有NSString属性name

因此,这种关系是董事会 - > to-many List - >多卡?

我有一个基于NSCollectionView的主 - 详细信息界面。在详细信息界面中,我有一个我希望填充的NSTableView。

绑定的设置如下:

BoardArrayController - >绑定到文件的所有者

  • **模型关键路径:board
  • **模式:班级
  • **项目原型:Board View Item

ListArrayController - >绑定到BoardArrayController。

  • **控制器键:选择
  • **模型关键路径:列表
  • **模式:班级
  • **项目原型:列表查看项目

CardArrayController - >绑定到ListArrayController

  • **控制器键:选择
  • **型号关键路径:卡片
  • **模式:班级

主集合视图的内容绑定到BoardArrayController

  • **控制器键:arrangeObjects

  • ** SelectionIndexes也绑定到BoardArrayController。

详细信息收集视图的内容绑定到ListArrayController

  • **控制器键:arrangeObjects

NSTableView的列(在项目原型中)绑定到CardArrayController

  • **控制器键:arrangeObjects
  • **模型关键路径:名称

问题

详细信息界面的NSTableView正在填充特定列表的正确卡数。但是,单元格标题为空。我可以单击行并查看选择,但遗憾的是没有文本。

1 个答案:

答案 0 :(得分:1)

有多个表视图,一个用于详细信息收集视图中的每个项目,对吧?并且每个表视图的内容应该反映它所代表的列表的卡片。各种表视图的内容不应受选择的列表的影响。

由于应该有多个具有独立内容的表视图,因此它们不能全部绑定到单个阵列控制器。您需要多个CardArrayControllers,一个用于详细信息收集视图中的每个项目(a.k.a.每个List)。

最简单的方法是将集合视图项视图移动到自己的NIB中。第一个NIB中的集合视图项应使用此次要NIB的NIB名称进行配置。它的 view 出口不应与任何东西连接。

将辅助NIB中文件所有者占位符的类配置为NSCollectionViewItem,因为它将加载和拥有它的内容。此NIB中的所有绑定都应该通过该占位符对象的representedObject属性。这个NIB中应该有一个数组控制器,基本上就是你目前拥有的CardArrayController。其内容将绑定到File的Owner.representedObject.cards。

因此,所选委员会的每个列表在详细信息收集视图中都有相应的项目。该项目的representedObject会自动设置为其代表的特定列表。集合视图项将加载辅助NIB以构建其视图。该NIB将具有该列表的卡的视图(包括表视图)和阵列控制器。

现在,将表视图列(在辅助NIB中)绑定到CardArrayController(在同一个NIB中)。假设您正在使用基于NSCell的表格视图。如果您使用基于视图的表视图,则需要以不同方式设置绑定。