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