哇,就像我两周前问的这个问题一样。
无论如何,如果你像我一样,问题是,
对于基于视图的NSOutlineViews
,您需要实施
- (NSView *)outlineView:(NSOutlineView *)outlineView
viewForTableColumn:(NSTableColumn *)tableColumn
item:(id)item;
委托方法并返回NSTableCellView
你设置了,
或者他们只会给你一个空行。最简单的方法就是调用
[outlineView makeViewWithIdentifier:@"MyCell" owner:self]
替换MyCell
与您输入的任何内容作为“用户界面项目标识符”
在身份检查器中为您NSTableCellView
.
Objective-C:
- (NSView *)outlineView:(NSOutlineView *)outlineView viewForTableColumn:(NSTableColumn *)tableColumn item:(id)item {
return [outlineView makeViewWithIdentifier:@"MyCell" owner:self];
}
Swift:
func outlineView(_ outlineView: NSOutlineView, viewFor tableColumn: NSTableColumn?, item: Any) -> NSView? {
return outlineView.makeView(withIdentifier: NSUserInterfaceItemIdentifier("MyCell"), owner: self)
}
2018 年 8 月 2 日更新:
实际上,您不需要设置委托。这是我如何让它工作的(测试过NSTreeController
,但应该与NSArrayController
以及):
- 将每个列对象绑定到
arrangedObjects
(没有模型密钥路径)
- 将最里面的自定义视图(例如标签字段)绑定到
objectValue.yourCustomValue
- 应该不是必需的,但如果这不起作用,请尝试设置列和列的标识符
TableCellView
。确保两个标识符相同。对具有不同标识符的其余列重复此操作。
截屏:基于视图的 NSOutlineView 的绑定 https://i.stack.imgur.com/3ikla.png