NSTableViewCell内的NSTableView

时间:2018-07-06 20:45:13

标签: macos cocoa nstableview

我正在尝试在NSTableViewCell内使用NSTableView并在禁用滚动时遇到问题。外部的表格视图可视化了一个对象列表-在我的例子中是3D材质定义-在每个单元格中,我使用(除其他控件外)另一个表格视图来代表材质的属性(这是一个可以改变大小的动态列表)。

  • 材料A
    • 属性1
    • 属性2
    • 属性3
  • 材料B
    • 属性1
  • 材料C
  • ...

除以下事项外,此方法工作正常:

两个tableview都使用动态行高,这会导致外部tableview单元格将内部tableview折叠到0px的高度。有没有一种方法可以禁用内部表视图的滚动并使其使用足够的高度来显示所有元素?更复杂的是,这些属性映射到不同的单元格定义(基于属性的类型),并且所有这些单元格都在Interface Builder中设置。因此,使用NSView并将其类型设置为NSTableView来避免使用NSScrollView或对所有控件进行编程构造都不是真正的选择。

任何提示都将受到赞赏!

1 个答案:

答案 0 :(得分:0)

更新:使用TableViews

您也可以使用NSTableView实现您想要的目标。与UITableView不同,NSTableView不会自行滚动。它包装在NSClipView内,而其本身包装在NSScrollView中。因此,您只需从中提取tableView并添加一些约束。

接口生成器目前还不太支持。您不能将tableView从其封闭的clipView中拖出。但是您可以将接口文件作为源代码打开,并删除从scrollView开始的所有内容(表本身除外)。 tableView应该在Interface Builder中显示正常(在Xcode 9和10上测试)

您必须在代码中添加约束,但是tableView应该自行增长。


由于内部表视图不必滚动,因此您只能使用NSStackView来布局视图。然后,您不必对抗NSTableView的行为。 如果您需要示例,请随时提问!