我正在尝试使用NSTableView和 cocoa 绑定(bind)创建分段的NSArrayController。我正在寻找类似的方法,例如iOS中的NSFetchedResultsController,您可以在其中设置分区键路径。我想用NSArrayController做类似的事情。

我举一个例子:
我有不同的任务。每个任务具有三个不同的优先级之一,低,中或高。任务还具有标题,描述,日期等属性。我想按优先级对任务进行分组或分组(此处的分区键路径为优先级)。

您可以使用绑定(bind)和NSArrayController解决此问题吗?我需要多个NSArrayController还是一个?

最佳答案

尽管NSTableView可以呈现组行,但不幸的是,它依赖于委托(delegate)或数据源来展平层次结构。它无法理解UITableViewUITableViewStyleGrouped等替代数据源语义,而且NSArrayController也不等同于NSFetchedResultsController的section方法。

一种选择是NSOutlineView,它设计用于显示任意深度的分层数据,但它可能会产生比简单的两级结构所需的工作更多的工作。 (您可以将轮廓 View 绑定(bind)到NSTreeController,但是树形 Controller 的文档记录不充分,并且在启动时,它的设计不正确。)

所以,这是我的建议:

  • 编写您自己的实现NSTableViewDelegateNSTableViewDataSource的 Controller 类。
  • 使用一个按优先级排序的数组 Controller ,并编写自己的代码以偏移行索引以适应节标题。
  • 从节标题上的YES返回tableView:isGroupRow:
  • 不要为此使用绑定(bind)。

  • 您还可以从第三方寻求可重用的,具有绑定(bind)功能的 Controller 。

    关于cocoa - 使用NSArrayController的NSTableView节,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5443113/

    10-13 05:41