使用NSArrayController划分NSTableView

bur*_*rki 9 xcode cocoa nstableview nsarraycontroller cocoa-bindings

我正在尝试创建一个NSTableView使用NSArrayController和可可绑定的分段.我正在寻找类似于NSFetchedResultsControlleriOS 的类似方法,您可以在其中设置部分键路径.我想做类似的东西NSArrayController.

我举个例子:我有不同的任务.每项任务都有三个不同的优先级之一,低,中或高.任务还具有标题,描述,日期等属性.我想按优先级划分或分组任务(此处的部分键路径是优先级).

你可以用绑定来解决这个问题NSArrayController吗?我需要多个NSArrayController还是只需一个?

pau*_*kow 7

虽然NSTableView可以渲染组行,但遗憾的是它依赖于委托或数据源来展平层次结构.它不了解像UITableViews 这样的备用数据源语义UITableViewStyleGrouped,也没有NSArrayController等同于NSFetchedResultsControllersection节的方法.

一种选择是NSOutlineView设计用于显示任意深度的分层数据,但它可能创建比简单的两级结构所需的更多工作.(您可以将大纲视图绑定到,NSTreeController但树控制器的文档记录很差,而且启动时,它的设计很糟糕.)

所以,这是我的建议:

  • 编写自己的控制器类,实现NSTableViewDelegateNSTableViewDataSource.
  • 使用按优先级排序的单个阵列控制器,并编写自己的代码以偏移行索引以适应段标题.
  • YEStableView:isGroupRow:章节标题返回.
  • 不要使用绑定.

您还可以从第三方寻找可重用,具有绑定功能的控制器.