【问题标题】:How to merge cells in NSOutlineView如何在 NSOutlineView 中合并单元格
【发布时间】:2013-04-08 00:33:12
【问题描述】:

我有一个包含多列的 NSOutlineView。 如何合并组节点的单元格,以便我将额外的空间用于节点标题? 例如,我有子节点的“名称”、“身高”、“体重”等列,但我需要组节点说“比佛利山庄高中足球队”,这太长而无法放入一列,所以我需要在组节点中展开该列的框架。

我试图找到答案,但我能找到的只是 NSTableView 的解决方案,它们涉及子类化,NSOutlineView 类参考明确指出你不应该这样做。接下来想到的是使用类别来重新定义 NSOutlineView 方法,但在网上阅读了一些内容后再次决定不这样做。

非常感谢任何帮助。

【问题讨论】:

  • 担心 AppKit 类不直接支持,所以自定义控件可能是您唯一的方法
  • 我不得不承认我发现 NSOutlineView 的文档有点不足,所以请确保您也阅读了超类 NSTableView 的头文件和文档。哦,还有 的东西需要你继承 NSOutlineView。只需确保您阅读了有关您覆盖的方法的文档即可。
  • 感谢您的回答。我找到了这个mactech.com/articles/mactech/Vol.18/18.11/1811TableTechniques/…,但它处理的是 NSTableView。我仍然尝试过,但没有显示任何单元格。列标题会正确显示,但表格的“正文”只是空白。

标签: cocoa nsoutlineview


【解决方案1】:

我已按照http://www.mactech.com/articles/mactech/Vol.18/18.11/1811TableTechniques/index.html 上的说明进行操作,并且成功了。没有显示单元格的问题是由空的 drawRect 实现引起的。我把它删了,留给 NSTextfieldCell 处理。

【讨论】:

    【解决方案2】:

    如果您只需要对选定节点(通常是根节点)执行此操作,则尝试在方法 -[NSOutlineViewDelegate outlineView:dataCellForTableColumn:item:] 中为 nil 列返回一个单元格(例如,NSTextFieldCell)-在其讨论中阅读更多信息和文档。然后,您可能还想为这些节点覆盖 [NSOutlineViewDelegate – outlineView:isGroupItem:] 以返回 YES 以获得更有趣的外观。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-30
      • 2011-08-03
      • 2013-05-22
      • 2014-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多