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