我的应用程序中有以下模型。
Board
,拥有类型为lists
的NSMutableArray属性List
List
,持有cards
Card
,具有NSString属性name
因此,这种关系是董事会 - > to-many List - >多卡?
我有一个基于NSCollectionView的主 - 详细信息界面。在详细信息界面中,我有一个我希望填充的NSTableView。
BoardArrayController - >绑定到文件的所有者
ListArrayController - >绑定到BoardArrayController。
CardArrayController - >绑定到ListArrayController
主集合视图的内容绑定到BoardArrayController
**控制器键:arrangeObjects
** SelectionIndexes也绑定到BoardArrayController。
详细信息收集视图的内容绑定到ListArrayController
NSTableView的列(在项目原型中)绑定到CardArrayController
详细信息界面的NSTableView正在填充特定列表的正确卡数。但是,单元格标题为空。我可以单击行并查看选择,但遗憾的是没有文本。
答案 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
的表格视图。如果您使用基于视图的表视图,则需要以不同方式设置绑定。