2016-01-06 108 views
1

我有一個簡單的NSOutlineView,通過swift初始化,有2列。我做了以下非常簡單的數據源,希望以這種方式進行測試,但也許我這種格式是不允許的。我假設表視圖只根據需要進行查詢,所以這不會導致無限循環。NSOutlineView不允許擴展

結果是具有「名稱」和「值」的4行2列表格式佈局,但沒有展開按鈕。

我已經實現了isExpandable與Obj-C中提到的類似的名稱並添加了列。

有更多的東西,我需要做的,設置一個NSOutlineView可擴展的元素,或者我應該嘗試另一種更真實的數據源測試:

import Cocoa 

class OutlineDataSource : NSObject,NSOutlineViewDataSource 
{ 
    var a = "Name" 
    var b = "Value" 

    var column1 : NSTableColumn 
    var column2 : NSTableColumn 

    init(column1:NSTableColumn,column2:NSTableColumn) { 
     self.column1 = column1 
     self.column2 = column2 
    } 

    func outlineView(outlineView: NSOutlineView, numberOfChildrenOfItem item: AnyObject?) -> Int 
    { 
     return 4; 
    } 

    func outlineView(outlineView: NSOutlineView, child index: Int, ofItem item: AnyObject?) -> AnyObject 
    { 
     return a 
    } 

    func outlineView(outlineView: NSOutlineView, isItemExpandable item: AnyObject) -> Bool 
    { 
     return true; 
    } 

    func outlineView(outlineView: NSOutlineView, objectValueForTableColumn tableColumn: NSTableColumn?, byItem item: AnyObject?) -> AnyObject? 
    { 
     if (tableColumn == column1) 
     { 
      return a 
     } 
     return b 
    } 
} 

回答

1

outlineTableColumn需要在大綱視圖設置。

+0

這絕對是NSOutlineView工作的重要組成部分,Apple文檔在其NSOutlineView頁面上完全沒有注意。他們繼續關於視圖委託和數據源。至少在編程創建一個NSOutlineView以及dataSource和NSTableColumn時,設置這個至關重要 - 比設置委託(我已經離開並且可以看到它仍然有效)更重要。此外,症狀缺少三角形,無法展開從根級可見的項目。這是我的案子的正確答案。 – WeakPointer