我已正确设置了NSOutlineView
及其数据源,但效果很好。
它实际上是一个基本的文件浏览器,显示特定路径(文件夹,子文件夹等)的文件夹结构。子文件夹按需加载(当文件夹项目展开时,只有加载其内容,出于速度原因)。
我想知道的是我如何能够轻松地添加对ImageAndTextCell类已有的支持,以便我可以每个条目旁边的文件夹/文件图标......
感谢任何帮助。 (请不要指向我的文档;我已经研究了几乎所有文档;我需要的是一些已经完成它的人的建议,以便我只是添加到我现有的代码中;无需从头开始重写或完全改变逻辑......)
由于
这是*My Code *(我在格式化时遇到了麻烦......所以我将其发布在Snippet.MX)
建议的内容和所有大纲查看项目的名称是否突然出现......
答案 0 :(得分:1)
文档是你的朋友,但我知道有时候是如此巨大。
顺便说一句 您需要为大纲视图设置ImageAndTextCell,您可以在窗口控制器init或awakeFromNib方法上或在NSOutlineView子类上直接(如果需要)。
在我的项目中,我有一个NSOutlineView子类,如下所示
// myOutlineView subclass
- (void)awakeFromNib {
self.imageCell = [[ImageAndTextCell alloc] init];
[self.imageCell setEditable: NO];
NSTableColumn* leftColumn = [[self tableColumns] objectAtIndex:0];
[leftColumn setDataCell: self.imageCell];
}
然后你需要实现willDisplayCell委托方法,你可以在其中设置特定列的图像,如下所示(文件夹图标,文件txt图标,jpg图标)。
在下面显示的代码中,我从我的单例VDIconUtils中获取它,但你只需返回一个NSImage
- (void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item {
[cell setDrawsBackground:NO];
if ([[tableColumn identifier] isEqualToString:@"mycellname"]) {
[cell setImage:[[VDIconUtils sharedIconUtils] iconForFolderStatus:fs :16 :[outlineView isItemExpanded:item]]];
}
}