首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置顶层NSOutlineView项的文本颜色

问如何设置顶层NSOutlineView项的文本颜色
EN

Stack Overflow用户
提问于 2018-09-11 13:46:29
回答 1查看 451关注 0票数 0

对于顶级项目和其他项目,我使用相同的NSTableCellView。我将所有项目的文本颜色设置为相同的方式:

代码语言:javascript
复制
- (nullable NSView*) outlineView:(NSOutlineView *)outlineView viewForTableColumn:(nullable NSTableColumn *)tableColumn item:(id)item_;
{
    NSTableCellView *cell = [outlineView makeViewWithIdentifier:@"DataCell" owner:self];
    cell.textField.stringValue = @"hi";
    cell.textField.textColor = NSColor.redColor;
    return cell;
}

这导致顶级物品有一些系统颜色-而不是红色。

​

​

我剩下的相关代码:

代码语言:javascript
复制
- (BOOL) outlineView:(NSOutlineView *)outlineView isGroupItem:(id)item_;
{
    return YES // only for the first item;
}

我试着按照其他主题中的建议对NSTableHeaderCell进行子类,但是它不起作用。

以下是我试图更改headerCells的方式:

代码语言:javascript
复制
- (void) viewDidLoad;
{
    for (NSTableColumn *col in self.ov_sidebar.tableColumns) {
        col.headerCell = [NCTableHeaderCell_customizable new];
    }

    self.ov_sidebar.delegate = self;
    self.ov_sidebar.dataSource = self;
}

但是没有一个NCTableHeaderCell_customizable overiden方法被调用。因此,我想定制的headerCells必须以其他方式设置。很可能这并不是改变文本颜色的正确方式。

您是否知道如何正确设置顶级NSOutlineView项的文本颜色?

当我将“高亮”从“源列表”更改为“无”时,可能会出现这样的列表:

​

​

它有适当的字体颜色,但不想要的格式与公开和背景与边框。

所以,我应该继续这样做,并尝试根据需要修复这种格式,还是有“源列表”的解决方案?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-11 19:09:02

你快到了。你可以试试这个。

代码语言:javascript
复制
for (NSTableColumn *col in self.ov_sidebar.tableColumns) {
    col.headerCell = [[MyTableHeaderCell alloc]initTextCell:@"hi"];
}

即使是直接来自NSTableHeaderCell的子类,也总是存在一些权衡。

代码语言:javascript
复制
  @interface MyTableHeaderCell : NSTableHeaderCell

  @end
  @implementation MyTableHeaderCell

  -(NSColor *) textColor{
   return NSColor.blueColor;
  }

 @end

这是可行的,不建议这样做,因为在NSTableHeaderCell文档中没有提到它们。

我展示了一个简单的方法来达到你的目标。

在IB中添加一个额外的TextField。然后贴上1001或者你喜欢的任何东西。第一个是textField of cellView,记得把它藏在IB中。正确的!把它藏起来,但不把它移走。

然后更改代码以引用第二个textfield。

代码语言:javascript
复制
NSTableCellView *cell = [outlineView makeViewWithIdentifier:@"DataCell" owner:self];
NSTextField * field = (NSTextField * )[cell viewWithTag:1001];
field.stringValue = ((MyData *) item_).value;
field.textColor = NSColor.redColor;

return cell;

​

​

​

​

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52277449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档