【问题标题】:NSOutlineView - how to get horizontal scrollbarNSOutlineView - 如何获得水平滚动条
【发布时间】:2016-01-06 20:40:56
【问题描述】:

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

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

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

接下来我尝试启用将列设置为“使用表格自动调整大小”并将单元格设置为“截断头部”,但这也无法按预期工作。

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

如您所见,第 2 个屏幕截图显示了问题,当调整节点名称时,节点名称被剪裁而不被截断,并且不显示滚动条

【问题讨论】:

    标签: cocoa monomac xamarin.mac


    【解决方案1】:

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

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

    outlineView.enclosingScrollView.hasHorizontalScroller = YES;
    

    基本上,您向大纲视图询问其封闭的滚动视图,然后将滚动视图设置为具有水平滚动条。

    如果您使用 Xcode 的 Interface Builder 来创建 nib 文件,并且在 nib 文件中存在大纲视图,您应该能够设置“显示水平滚动条”属性以防止在运行时以编程方式进行。

    【讨论】:

      【解决方案2】:

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

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

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

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

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2014-11-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-16
          • 1970-01-01
          • 2017-06-04
          相关资源
          最近更新 更多