【发布时间】:2023-03-23 19:51:01
【问题描述】:
我想要实现的是这样的:
DevExpress Grid
Table with fixed columns
以上链接中的表格可以有“固定”列,不随其他内容滚动。
我知道NSTableView 的floatsGroupRows 功能,以及NSScrollView 的addFloatingSubview:forAxis: 方法;但要实现上述目标,这些还不够:
- 首先列不是
NSViews - 表头和表内容放在
NSScrollView下的2个独立的NSClipViews中(这是NSTableView的默认操作)
所以只要我找不到任何内置的解决方案。我唯一的想法是相邻使用 3 个NSTableViews(左侧+1,右侧+1);并手动同步其中的垂直滚动。如何同步水平滚动,现在这是一个更难的问题。左右两侧不应该滚动,所以应该“浮动”。 对于表格的内容,(*);但列标题是不同的动物。好的,仍然应该有一种方法可以通过修改列的绘图来实现这种浮动行为......NSScrollView 的 addFloatingSubview:forAxis: 方法应该适用于 IMO
但是,我仍然没有开始实现上述的,因为我的 NSTableView 已经足够慢了 (NSTableview View Based Scrolling Performance),而且我确信这些加上一些东西会大大减慢它。
有没有人(更好的)想法如何在 Cocoa 中实现浮动列? 非常感谢任何帮助!
编辑
(*):NSScrollView 的addFloatingSubview:forAxis: 不适用于此。正如我现在所看到的,如果赋予此方法的NSView 是NSTableView 的子视图,它会得到特殊处理。可能该表将自己的逻辑添加到;现在对我来说,NSTableView 一次只能有 1 个浮动行。
【问题讨论】:
-
如何同步水平滚动:Synchronizing Scroll Views.
-
谢谢,有用的资源。 (虽然是垂直滚动的同步,而不是水平滚动。水平滚动不需要任何同步)
-
我会告诫不要尝试通过组合现成的可可组件来模拟这些屏幕截图。正如您所理解的那样,组合和填充多个表视图,然后同步滚动,然后克服性能问题将成为一个令人头疼的问题。相反,放弃你的理想方法,专注于提出一个以更传统的方式使用可用组件的解决方案——如果你这样做,我认为你会付出很多努力,并最终得到一个很好的 UI更容易使用。
-
问题是,我找不到任何以常规方式使用可用组件来解决此任务:) 另外,我使用了一个子类 NSTableView,它已经扩展了很多功能;现在这只是一个更改请求。因此,从头开始编写自己的表,或者使用已经编写好的第 3 方组件,现在对我来说不是一个解决方案。
标签: cocoa nstableview floating nstablecolumn