gpt4 book ai didi

cocoa - 基于 View 的 NSOutlineView 标题单元格字体问题

转载 作者:行者123 更新时间:2023-12-03 16:10:00 25 4
gpt4 key购买 nike

我目前正在尝试在我的 Cocoa 应用程序中使用新的基于 View 的 NSOutlineView。由于我没有使用绑定(bind),因此我在 Controller 中实现了所有必需的委托(delegate)和数据源方法。

在界面生成器中,我添加了一个 NSOutlineView,其突出显示设置为SourceList,内容模式设置为基于 View 。因此,提供了两个默认的表格单元格 View (一个标题单元格将 HeaderCell 设置为标识符,一个数据单元格将 DataCell 设置为标识符)

这就是界面生成器中的样子,标题单元格 View 正确显示灰蓝色文本字段,而数据单元格 View 具有 ImageView 和正确的文本字段颜色和字体设置

为了提供 View ,我使用以下代码返回 DataCell View 或 HeaderCell View ,并根据界面生成器中设置的相应标识符相应地设置单元格的文本字段。

- (NSView *)outlineView:(NSOutlineView *)outlineView 
viewForTableColumn:(NSTableColumn *)tableColumn
item:(id)item {


NSTableCellView *result = nil;

if ([item isKindOfClass:[NSMutableDictionary class]]) {
result = [outlineView makeViewWithIdentifier:@"HeaderCell" owner:self];

id parentObject = [outlineView parentForItem:item] ? [outlineView parentForItem:item] : groupedRoster;
[[result textField] setStringValue:[[parentObject allKeys] objectAtIndex:0]];


} else {
result = [outlineView makeViewWithIdentifier:@"DataCell" owner:self];

[item nickname] ? [[result textField] setStringValue:[item nickname]] : [[result textField] setStringValue:[[item jid] bare]];
}
return result;
}

运行一切,如下所示。

任何人都可以向我提供提示,解释为什么标题单元格在选择时既不是粗体,也不是正确的颜色吗?

最佳答案

您需要实现 -outlineView:isGroupItem: 委托(delegate)方法并为标题行返回 YES。这将标准化字体,并用右侧的显示/隐藏按钮替换左侧的显示三角形。您仍然需要手动将字符串大写才能获得完整效果。

我不确定上面的组行委托(delegate)方法是否使选择样式看起来不错。但是,您通常不希望源列表中的标题行完全可选,您可以通过 -outlineView:shouldSelectItem: 委托(delegate)方法为标题项返回 NO 。

关于cocoa - 基于 View 的 NSOutlineView 标题单元格字体问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7097142/

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