gpt4 book ai didi

objective-c - 如何设置顶级 NSOutlineView 项目的文本颜色

转载 作者:行者123 更新时间:2023-12-03 17:46:57 32 4
gpt4 key购买 nike

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

- (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;
}

这会导致顶级项目具有某种系统颜色 - 而不是红色。

enter image description here

我剩余的相关代码:

- (BOOL) outlineView:(NSOutlineView *)outlineView isGroupItem:(id)item_;
{
return YES // only for the first item;
}

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

这就是我尝试更改 headerCells 的方法:

- (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 重写方法。所以我猜想自定义 headerCells 必须以其他方式设置。可能这甚至不是更改文本颜色的正确方法。

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

一个可能的线索,当我将“突出显示”从“源列表”更改为“无”时,它会显示如下列表:

enter image description here

它有正确的字体颜色,但有不需要的格式,带有披露和带有边框的背景。

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

最佳答案

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

for (NSTableColumn *col in self.ov_sidebar.tableColumns) {
col.headerCell = [[MyTableHeaderCell alloc]initTextCell:@"hi"];
}

即使您直接从 NSTableHeaderCell 继承子类,也总会有一些权衡。

  @interface MyTableHeaderCell : NSTableHeaderCell

@end
@implementation MyTableHeaderCell

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

@end

这有效,但不推荐,因为 NSTableHeaderCell 的文档中没有提到它们。

我展示了一种实现您目标的简单方法。

在 IB 中添加一个额外的 TextField。并将其标记为 1001 或任何您喜欢的标记。你的第一个是cellView的textField,记得将它隐藏在IB中。正确的!隐藏它但不删除它。

然后更改代码以引用第二个文本字段。

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

return cell;

enter image description here

enter image description here

关于objective-c - 如何设置顶级 NSOutlineView 项目的文本颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52277449/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com