我正在尝试使用NSOutlineView创建一个显示树结构的简单文件夹浏览器。将monoMac和Xamarin Studio与XCode界面构建器一起用于UI。
我现在遇到的问题是如何将列调整为内容的宽度和/或如何修剪列中显示的文本。
我尝试的第一个设置是启用AutoresizesOutlineColumn。 这会在一定程度上调整列的大小,但是一旦遇到带有连字符的名称,它只会调整到第一个连字符,并且从那里看起来它不会再调整大小。
接下来我尝试启用将列设置为“AutoResize with table”并将单元格设置为“truncate head”,但这也不能按预期工作。
我想要的是列始终为上下文的全宽,然后让视图显示水平滚动条。 任何指针如何配置? 我在网上搜索过,但我发现的例子主要是如何使用数据源,没有关于如何配置视图本身的内容。
2屏幕截图显示了该问题,如您所见,调整大小时节点名称被剪切而不是截断且没有显示滚动条
答案 0 :(得分:0)
图片中显示的每个大纲视图实际上都包含在他们自己的滚动视图中(NSScrollView
)。要获得水平滚动条,您需要更改滚动视图的属性,而不是大纲视图本身的属性。
很抱歉,我不能给你确切的代码和语法,因为我不熟悉monomac,但在Objective-C中,代码如下所示:
outlineView.enclosingScrollView.hasHorizontalScroller = YES;
基本上,您要求大纲视图查看其封闭的滚动视图,然后将滚动视图设置为具有水平滚动条。
如果您正在使用Xcode的Interface Builder创建nib文件,并且在nib文件中显示大纲视图,则应该能够设置“Show Horizontal Scroller”属性以防止必须在运行时以编程方式执行此操作。
答案 1 :(得分:0)
我能够找出为什么我的单元格设置的更改没有在UI中显示。
原来是一个基本的初学者错误(我想)。
首先 - 我没有在TableCellView上的代码集中使用的单元格ID,而是在子视图TableViewCell上。
第二 - 在GetView中我创建了一个NSTextField实例,而不是NSTableCellView。
添加完这些更改后,单元格视图,颜色,裁剪等设置显示正确。
但我仍然无法让scollbars显示出我想要的方式。 滚动视图在IB中设置为自动。 如果我启用AutoResizesOutlineColumn然后将IB中列的调整大小设置为无,则滚动条会显示,但它会保留创建窗口时列的宽度。 如果我将resize选项设置为'auto resize with table',则列会调整大小,但当单元格内容超出宽度时不会显示滚动。
答案 2 :(得分:0)
我遇到了同样的问题,并通过更改OutlineView NSTableColumn
的宽度来解决。