NSTableViewCell 中的 NSTableView

NSTableView inside an NSTableViewCell

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

除一件事外,这工作正常:

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

非常感谢任何提示!

更新:使用 TableViews

您也可以使用 NSTableView 来实现您想要的效果。与 UITableView 不同,NSTableView 本身不进行滚动。它被包裹在 NSClipView 中,NSClipView 本身被包裹在 NSScrollView 中。因此,您只需从中提取 tableView 并添加一些约束。

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

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


由于内部 table 视图不需要滚动,您可以只使用 NSStackView 来布置视图。那么你就不必与 NSTableView 的行为作斗争了。 如果您需要示例,请随时询问!