Macos 在Swift中显示源列表(NSOutlineView)中的字符串列表

Macos 在Swift中显示源列表(NSOutlineView)中的字符串列表,macos,cocoa,swift,nsoutlineview,Macos,Cocoa,Swift,Nsoutlineview,我试图在源列表侧边栏中显示一个简单的字符串列表——类似于Finder或Github应用程序中的字符串列表。通过阅读,我看不出哪个方法正在设置视图显示的内容。到目前为止,我已经: var items: [String] = ["Item 1", "Item 2", "Item is an item", "Thing"] func outlineView(outlineView: NSOutlineView, child index: Int, ofItem item: AnyObject?) -&

我试图在源列表侧边栏中显示一个简单的字符串列表——类似于Finder或Github应用程序中的字符串列表。通过阅读,我看不出哪个方法正在设置视图显示的内容。到目前为止,我已经:

var items: [String] = ["Item 1", "Item 2", "Item is an item", "Thing"]
func outlineView(outlineView: NSOutlineView, child index: Int, ofItem item: AnyObject?) -> AnyObject {
    return items[index]
}

func outlineView(outlineView: NSOutlineView, isItemExpandable item: AnyObject) -> Bool {
    return false
}
func outlineView(outlineView: NSOutlineView, numberOfChildrenOfItem item: AnyObject?) -> Int {
    if item == nil {
        return items.count
    }
    return 0
}
func outlineView(outlineView: NSOutlineView, objectValueForTableColumn tableColumn: NSTableColumn?, byItem item: AnyObject?) -> AnyObject? {
    return "ITEM"
}
func outlineView(outlineView: NSOutlineView, setObjectValue object: AnyObject?, forTableColumn tableColumn: NSTableColumn?, byItem item: AnyObject?) {
    println(object, tableColumn, item)
}
// Delegate
func outlineView(outlineView: NSOutlineView, dataCellForTableColumn tableColumn: NSTableColumn?, tem item: AnyObject) -> NSCell? {
    println("Called")
    let view = NSCell()
    view.stringValue = item as String
    return view
}
我得到的只是一个源列表,其中有四个空白项(没有文本)。是否需要覆盖NSOutlineViewDeleteGate中的另一个方法来显示信息?

如果您愿意使用基于视图的大纲视图,而不是基于单元格的大纲视图,则可以将委托方法
outlineView:dataCellForTableColumn:item
替换为其等效视图
outlineView:viewForTableColumn:item:

func outlineView(outlineView: NSOutlineView,
    viewForTableColumn tableColumn: NSTableColumn?,
    item: AnyObject) -> NSView? {

    var v = outlineView.makeViewWithIdentifier("DataCell", owner: self) as NSTableCellView
    if let tf = v.textField {
        tf.stringValue = item as String
    }
    return v
} 
请注意,此方法中的重要调用是
NSTableView
方法
makeViewWithIdentifier:owner:
。此方法的第一个参数是字符串DataCell,它是界面生成器提供给
NSTableViewCell
对象的
标识符的值,当您将其拖动到画布上时,它会自动将该对象插入
NSOutlineView
。此对象具有
textField
属性和
imageView
;只需将
textField
stringValue
属性设置为
项的值即可