NSOutlineView - 如何获得水平滚动条

时间:2016-01-06 20:40:56

标签: cocoa monomac xamarin.mac

我正在尝试使用NSOutlineView创建一个显示树结构的简单文件夹浏览器。将monoMac和Xamarin Studio与XCode界面构建器一起用于UI。

我现在遇到的问题是如何将列调整为内容的宽度和/或如何修剪列中显示的文本。

我尝试的第一个设置是启用AutoresizesOutlineColumn。 这会在一定程度上调整列的大小,但是一旦遇到带有连字符的名称,它只会调整到第一个连字符,并且从那里看起来它不会再调整大小。

接下来我尝试启用将列设置为“AutoResize with table”并将单元格设置为“truncate head”,但这也不能按预期工作。

我想要的是列始终为上下文的全宽,然后让视图显示水平滚动条。 任何指针如何配置? 我在网上搜索过,但我发现的例子主要是如何使用数据源,没有关于如何配置视图本身的内容。

2屏幕截图显示了该问题,如您所见,调整大小时节点名称被剪切而不是截断且没有显示滚动条

enter image description here enter image description here

3 个答案:

答案 0 :(得分:0)

图片中显示的每个大纲视图实际上都包含在他们自己的滚动视图中(NSScrollView)。要获得水平滚动条,您需要更改滚动视图的属性,而不是大纲视图本身的属性。

很抱歉,我不能给你确切的代码和语法,因为我不熟悉monomac,但在Objective-C中,代码如下所示:

outlineView.enclosingScrollView.hasHorizontalScroller = YES;

基本上,您要求大纲视图查看其封闭的滚动视图,然后将滚动视图设置为具有水平滚动条。

如果您正在使用Xcode的Interface Builder创建nib文件,并且在nib文件中显示大纲视图,则应该能够设置“Show Horizo​​ntal Scroller”属性以防止必须在运行时以编程方式执行此操作。

答案 1 :(得分:0)

我能够找出为什么我的单元格设置的更改没有在UI中显示。

原来是一个基本的初学者错误(我想)。

首先 - 我没有在TableCellView上的代码集中使用的单元格ID,而是在子视图TableViewCell上。

第二 - 在GetView中我创建了一个NSTextField实例,而不是NSTableCellView。

添加完这些更改后,单元格视图,颜色,裁剪等设置显示正确。

但我仍然无法让scollbars显示出我想要的方式。 滚动视图在IB中设置为自动。 如果我启用AutoResizesOutlineColumn然后将IB中列的调整大小设置为无,则滚动条会显示,但它会保留创建窗口时列的宽度。 如果我将resize选项设置为'auto resize with table',则列会调整大小,但当单元格内容超出宽度时不会显示滚动。

答案 2 :(得分:0)

我遇到了同样的问题,并通过更改OutlineView NSTableColumn的宽度来解决。