【问题标题】:Cocoa Bindings NSTableColumn cell title missingCocoa Bindings NSTableColumn 单元格标题丢失
【发布时间】:2014-08-12 09:02:13
【问题描述】:

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

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

因此关系是 Board --> to-many List --> to-many Card

我有一个基于 NSCollectionView 的主从界面工作。在详细界面中,我有一个要填充的 NSTableView。

绑定设置如下:

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

  • ** 模型键路径:板
  • ** 模式:类
  • ** 项目原型:Board View Item

ListArrayController -> 绑定到 BoardArrayController。

  • ** 控制器键:选择
  • ** 模型键路径:列表
  • ** 模式:类
  • ** 项目原型:列表视图项目

CardArrayController -> 绑定到 ListArrayController

  • ** 控制器键:选择
  • ** 模型密钥路径:卡片
  • ** 模式:类

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

  • ** 控制器键:排列对象

  • ** SelectionIndexes 也绑定到 BoardArrayController。

详细集合视图的内容绑定到 ListArrayController

  • ** 控制器键:排列对象

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

  • ** 控制器键:排列对象
  • ** 模型密钥路径:名称

问题

详细界面的 NSTableView 正在为某个列表填充正确数量的卡片。但是,单元格标题为空。我可以单击行并查看选择,但不幸的是没有文本。

【问题讨论】:

    标签: cocoa nstableview cocoa-bindings


    【解决方案1】:

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

    由于应该有多个具有独立内容的表视图,因此它们不能都绑定到单个数组控制器。您需要多个 CardArrayController,一个用于详细集合视图中的每个项目(也就是每个列表)。

    执行此操作的最简单方法是将集合视图项视图移动到其自己的 NIB 中。第一个 NIB 中的集合视图项应使用我正在描述的此辅助 NIB 的 NIB 名称进行配置。它的 view 插座不应连接到任何东西。

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

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

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

    【讨论】:

    • 对问题有很好的理解。这解决了它!我什至还没有为集合视图项创建第二个 NIB。
    猜你喜欢
    • 2021-10-29
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    • 2022-12-10
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    • 1970-01-01
    相关资源
    最近更新 更多