Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSTableView-具有格式丰富的文本和图像的表列_Objective C_Macos_Cocoa_Nstableview - Fatal编程技术网

Objective c NSTableView-具有格式丰富的文本和图像的表列

Objective c NSTableView-具有格式丰富的文本和图像的表列,objective-c,macos,cocoa,nstableview,Objective C,Macos,Cocoa,Nstableview,我是Cocoa新手,我想显示一列NSTableView,其中包含多行格式(一个单元格中的不同字体和颜色)和图像。NSTableView是执行此任务的最佳选择吗 如果是,我怎么能得到它?我需要使用NSCell控件吗?我会感谢你的好的说明教程和例子。我试过用谷歌搜索它,但没有找到有用的东西。基于单元格的表视图方法 对于基于单元格的表视图,您无法执行此操作,因为标准单元格NSImageCell和NSTextCell只能显示图像或文本。您可以创建NSCell的down子类来创建一个同时接受图像和文本的单

我是Cocoa新手,我想显示一列NSTableView,其中包含多行格式(一个单元格中的不同字体和颜色)和图像。NSTableView是执行此任务的最佳选择吗

如果是,我怎么能得到它?我需要使用NSCell控件吗?我会感谢你的好的说明教程和例子。我试过用谷歌搜索它,但没有找到有用的东西。

基于单元格的表视图方法 对于基于单元格的表视图,您无法执行此操作,因为标准单元格NSImageCell和NSTextCell只能显示图像或文本。您可以创建NSCell的down子类来创建一个同时接受图像和文本的单元格,例如。要显示不同的字体和颜色,您需要使用
NSAttributedString
(例如,没有选中此代码Xcode,因此可能会有一些错误,但它提供了一个想法)

基于视图的表视图方法
基于视图的表格视图在其表格单元格中显示视图。标准的NSTableCellView有一个
imageView
textField
属性,因此对于您来说,这似乎是一个理想的选择。只需将表格视图单元格的图像视图设置为显示图像,
tableCellView.imageView.image=myImageset
,然后设置要在文本字段中显示的文本,
tableCellView.textField.attributeStringValue=MyAttributeString
。注意,你必须使用一个属性字符串来获得不同的颜色和字体(见上文)。

一个WWDC 2014,它巧妙地宣布NSCell已经过时了,所以考虑基于视图的方法来处理任何新代码。
NSString *redWord = @"Hello";
NSString *greenWord = @"World";
NSString *message = [NSString stringWithFormat:@"%@ %@", redWord, greenWord];

NSMutableAttributedString *text = 
 [[NSMutableAttributedString alloc] 
   initWithAttributedString:message];

[text addAttribute:NSForegroundColorAttributeName 
             value:[NSColor redColor] 
             range:NSMakeRange(0, [redWord length])];

[text addAttribute:NSFontAttributeName 
             value:[NSFont fontWithName:@"Arial Italic" size:12];
             range:NSMakeRange(0, [redWord length])];

[text addAttribute:NSForegroundColorAttributeName 
             value:[NSColor greenColor] 
             range:NSMakeRange([redWord length] + 1, [greenWord length])];

[text addAttribute:NSFontAttributeName 
             value:[NSFont fontWithName:@"Times Bold" size:12];
             range:NSMakeRange([redWord length] + 1, [greenWord length])];