2016-01-06 116 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',那麼該列將調整大小,但當單元格內容超出寬度時不顯示滾動條。