Objective c NSOutlineView和ImageAndTextCell的问题

Objective c NSOutlineView和ImageAndTextCell的问题,objective-c,macos,cocoa,nsoutlineview,Objective C,Macos,Cocoa,Nsoutlineview,我有一个NSOutlineView,里面有项目(还有孩子) 以下是单元格修改代码: - (void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item { if ([item isKindOfClass:[JQPage class]]) { [cell setImage

我有一个
NSOutlineView
,里面有项目(还有孩子)

以下是单元格修改代码:

- (void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item {

    if ([item isKindOfClass:[JQPage class]])
    {
        [cell setImage:[NSImage imageNamed:@"doc_empty_icon&16"] size:16.0];
    }
    else if ([item isKindOfClass:[JQElement class]])
    {
        [cell setImage:[NSImage imageNamed:@"brackets_icon&16"] size:16.0];
    }   
}

下面是我需要的一个可视示例:


有什么想法吗?

我不确定是否要把孩子们推到右边。您可能必须覆盖som e类函数

选择项目后,可以将图像切换为白色版本。我不知道NSOutlineView是否支持自动黑白切换,但如果支持,则必须使用以下内容设置背景样式

-(void)setBackgroundStyle:(NSBackgroundStyle)backgroundStyle {


     [super setBackgroundStyle:NSBackgroundStyleLight];
}

关于图像,您需要的是NSImage setTemplate。从文件来看

Cocoa单元格利用模板图像的特性,即其简化的颜色方案和透明度的使用,以改善每个受支持状态下相应控件的外观

在这种情况下,图像将在选择时与其负片进行交换