0
使用NSOutlineView + NSTreeController + Core数据导致奇怪的大纲视图布局。正如您在下面的图片中看到的,大纲视图在“父”展开时为“子”创建了一个空间,而是在“父”的顶部绘制了“子”。我创建了一个按钮,当它按下时会调用[outlineVIew reloadData]方法,使视图正确绘制。基于视图的NSOutlineView在父视图上绘制子视图
核心数据模型:
- 父
- 孩子
- isLeaf
- 名
我的厦门国际银行设置:
- NSOutlineView德勒吃了被设置为文件的所有者
- NSTreeController必然会我的文档核心数据方面
- NSTableColumn势必NSTreeController.arrangedObjects
- 的NSTextField势必NSTableCellView.objectValue.name
NSPersistentDocument类:
- (void)windowControllerDidLoadNib:(NSWindowController *)aController
{
[super windowControllerDidLoadNib:aController];
Node *parent = [self createNodeOfTypeString:@"Node"];
Node *child = [self createNodeOfTypeString:@"Node"];
parent.name = @"Parent";
parent.isLeaf = NO;
[parent addChildrenObject:child];
child.name = @"Child";
child.isLeaf = YES;
[self.treeController addObject:parent];
}
- (id)outlineView:(NSOutlineView *)ov objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item {
return [item representedObject];
}
- (NSView *)outlineView:(NSOutlineView *)ov viewForTableColumn:(NSTableColumn *)tableColumn item:(id)item {
if ([[item representedObject] isKindOfClass:[Node class]]) {
// Everything is setup in bindings
return [ov makeViewWithIdentifier:@"MainCell" owner:self];
}
return nil;
}
结果:
大纲视图与父母折叠
大纲视图与父母扩展和孩子画上尚
'来自屏幕截图的名称'在哪里?它没有出现在模型中。 – TechZen