我目前正在尝试在我的Cocoa应用程序中使用新的基于视图的NSOutlineView。由于我没有使用绑定,所以我在我的控制器中实现了所有必需的委托和数据源方法。基于视图的NSOutlineView标题单元格字体问题
在Interface Builder我添加了一个NSOutlineView设置为SOURCELIST并设置为查看基于内容模式突出显示。因此,有提供两个缺省表格单元视图(与HeaderCell集作为标识符和与DATACELL组作为标识符的一个数据小区的一个标题单元格)
这就是它看起来像在界面生成器,头单元格的观点正确显示灰蓝色的TextField而数据单元的观点具有图像视图和文本字段与正确颜色和字体设置
为了提供的意见,我使用下面的代码,返回一个DataCell-视图或HeaderCell视图和集合根据界面生成器中设置的相应标识符,相应单元格的textField。
- (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;
}
运行它看起来如下所示。
任何人都可以提供提示,为什么选择时标题单元既不是粗体也不是正确的颜色?
很好,谢谢发现,这正是我一直在寻找。如果有人遇到问题,请根据[本文](http:// stackoverflow。)展开和折叠时使用setFloatsGroupRows:NO来防止第一个组项目*跳跃*上下。COM /问题/ 6814620 /奇怪的行为 - 使用 - 视图 - 基于nsoutline-SOURCELIST) – BinaryBucks
虽然我现在它是一切正确显示上面的代码工作并没有真正流利工作展开/折叠一群喜欢它,当是例如发现者。在动画中总会有轻微但明显的停顿,并且CPU负载很重,就好像视图是新分配的一样。如果我只用一个标识符来使用makeViewWithIdentifer,那么每个单元格都是一个标题单元格(或数据单元格,它不会马上),一切都很流畅。任何暗示为什么? – BinaryBucks
是的,整个floatsGroupRows属性刚刚为大纲视图断开。没有看到你描述的性能问题。也许是来自层级支持的超级视图的Core Animation回归?不知道。 –