1
我想在表格视图的单个单元格中的文本项旁边显示图标。在NSTableView的同一单元格中显示图标和文本
我想实现的一个示例是系统首选项 - >用户帐户 - >登录项目中的应用程序列表。
什么是好方法?
我想在表格视图的单个单元格中的文本项旁边显示图标。在NSTableView的同一单元格中显示图标和文本
我想实现的一个示例是系统首选项 - >用户帐户 - >登录项目中的应用程序列表。
什么是好方法?
有一个很好的例子是如何做到这一点:http://www.cocoadev.com/index.pl?IconAndTextInTableCell你让你自己定制的NSCell,无论绘制图片和文字
@interface IconCell : NSCell
{
NSArray * cellValue;
}
- (void)setObjectValue:(id <NSCopying>)object;
- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView;
@implementation IconCell
- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
{
NSDictionary * textAttributes =
[NSDictionary dictionaryWithObjectsAndKeys:[NSFont
userFontOfSize:10.0],NSFontAttributeName, nil];
NSPoint cellPoint = cellFrame.origin;
[controlView lockFocus];
[[cellValue objectAtIndex:1] compositeToPoint:NSMakePoint(cellPoint.x+2,
cellPoint.y+14) operation:NSCompositeSourceOver];
[[cellValue objectAtIndex:0] drawAtPoint:NSMakePoint(cellPoint.x+18,
cellPoint.y) withAttributes:textAttributes];
[controlView unlockFocus];
}
- (void)setObjectValue:(id <NSCopying>)object
{
cellValue = (NSArray *)object;
}
@end
值得指出的是该单元需要的数据源就可以提供一个数组(文件名,图标)作为对象值。提问者的额外荣誉:调整单元格代码以期望NSURL作为对象值,并从中获取文件名和图标。 – 2010-08-02 08:49:19
酷,好东西。我现在正在做的是通过数组控制器将我的表视图绑定到捆绑ID数组,通过值转换器将数据包ID转换为应用程序显示名称。我想我的价值转换器可以放出图像和文本组合为单元绘制。无论如何,我需要现在阅读关于NSCell。我之前没有处理过的东西... – 2010-08-02 09:58:28
使用-tableView:willDisplayCell:设置图像部分的委托方法避免了需要使用数组作为对象值。它也可以与Bindings自由混合。 – 2010-08-02 10:09:11