将NSTreeController绑定到代码

时间:2015-08-05 08:44:49

标签: objective-c macos swift cocoa

我希望将NSTreeController绑定到NSOutlineView,然后绑定到treeController.bind(NSContentArrayBinding, toObject: viewModel, withKeyPath: "items", options: nil) outlineView.bind(NSContentBinding, toObject: treeController, withKeyPath: "arrangedObjects", options: nil) outlineView.bind(NSSortDescriptorsBinding, toObject: treeController, withKeyPath: "sortDescriptors", options: nil) outlineView.bind(NSSortDescriptorsBinding, toObject: treeController, withKeyPath: "selectionIndexPaths", options: nil)

items
viewModel中的

let column = NSTableColumn(identifier: "0") column.bind(NSValueBinding, toObject: treeController, withKeyPath: "arrangedObjects.displayName"), options: nil) outlineView.addTableColumn(column) 包含一个对象,该对象又有自己的子数组。

但是,在执行上述绑定时,UI中不会显示任何内容。我还尝试添加一栏:

    foreach (PSObject xx in results)
    {
        PSMemberInfo ObjectId = xx.Properties["ObjectId"];
        PSMemberInfo DisplayName = xx.Properties["DisplayName"];
    }

但无济于事,我仍然无法在用户界面中显示任何结果。

我缺少什么来使绑定工作? NSOutlineView按预期呈现,只是没有项目。

(在Objective-C中随意回答,我对语言选择并不挑剔)

1 个答案:

答案 0 :(得分:2)

您需要设置树控制器的childrenKeyPath。否则,树控制器无法理解它所指向的数据结构。 childrenKeyPath应该是相对于items数组元素的关键路径,它给出了该元素子元素的数组。