Ami*_*k12 4 macos cocoa objective-c nsoutlineview nscell
我的大纲视图,我正在添加自定义单元格,要绘制自定义单元格,我指的是示例代码,存在于 Cocoa 文档中
http://www.martinkahr.com/2007/05/04/nscell-image-and-text-sample/
我想用我的自定义图像更改单元格的显示图像,我尝试过以下操作
- (void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item
{
if([item isKindOfClass:[NSValue class]])
{
MyData *pDt = (MyData *)[item pointerValue];
if(pDt->isGroupElement())
{
[cell setImage:pGroupImage];
}
}
}
Run Code Online (Sandbox Code Playgroud)
但这也不起作用,有没有其他方法可以更改公开图像,还有我如何在 willDisplayCell 中找出项目是展开还是折叠,以便我可以相应地设置图像,
这只是改变披露形象的地方吗?
在我自己研究了这个问题并在这里尝试了一些答案之后,我发现提到的其他方法也可以工作,但需要您执行更多的手动干预以避免屏幕伪影和其他奇怪的行为。
我找到的最简单的解决方案如下,在大多数情况下应该可以工作。
该解决方案的另一个好处是系统可以自动处理很多其他情况,例如柱移动等,而无需您参与。
- (void)outlineView:(NSOutlineView *)outlineView willDisplayOutlineCell:(id)cell
forTableColumn:(NSTableColumn *)tableColumn
item:(id)item
{
[cell setImage:[NSImage imageNamed: @"Navigation right 16x16 vWhite_tx"]];
[cell setAlternateImage:[NSImage imageNamed: @"Navigation down 16x16 vWhite_tx"]];
}
Run Code Online (Sandbox Code Playgroud)
在您的情况下,您将使用类检测逻辑将其包装起来,并为您的情况适当设置单元格图像。