NSTableViewCell 中的 NSTableView
NSTableView inside an NSTableViewCell
我正在尝试在 NSTableViewCell 中使用 NSTableView,但在禁用滚动时遇到了问题。外部 table 视图可视化对象列表 - 在我的例子中是 3D material 定义 - 在每个单元格中我使用(在其他控件中)另一个 table 视图来表示对象的属性material(这是一个可以改变大小的动态列表)。
- material一个
- 属性 1
- 属性 2
- 属性 3
- material乙
- 属性 1
- material C
- ...
除一件事外,这工作正常:
两个 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
的行为作斗争了。
如果您需要示例,请随时询问!
我正在尝试在 NSTableViewCell 中使用 NSTableView,但在禁用滚动时遇到了问题。外部 table 视图可视化对象列表 - 在我的例子中是 3D material 定义 - 在每个单元格中我使用(在其他控件中)另一个 table 视图来表示对象的属性material(这是一个可以改变大小的动态列表)。
- material一个
- 属性 1
- 属性 2
- 属性 3
- material乙
- 属性 1
- material C
- ...
除一件事外,这工作正常:
两个 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
的行为作斗争了。
如果您需要示例,请随时询问!