2016-01-06 76 views
1

我想创建一个简单的文件夹浏览器显示使用NSOutlineView的树结构。使用monoMac和Xamarin Studio以及UI的XCode界面构建器。NSOutlineView - 如何获得水平滚动条

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

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

接下来我尝试启用将列设置为“AutoResize with table”并将单元格设置为“截断头部”,但这也无法按预期工作。

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

的2截图显示的问题,因为你可以看到,在调整大小时节点名被裁剪不被截断,没有滚动条显示

enter image description here enter image description here

回答

0

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

对不起,我不能给你确切的代码和语法,因为我不熟悉MONOMAC,但在Objective-C代码将如下所示:

outlineView.enclosingScrollView.hasHorizontalScroller = YES; 

基本上,你请求轮廓视图查看其包含的滚动视图,然后将滚动视图设置为具有水平滚动条。

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

0

我能弄清楚为什么我的单元格设置更改没有显示在用户界面中。

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

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

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

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

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