我正在尝试在我的Cocoa应用程序中使用一个新的基于视图的NSOutlineView。由于我没有使用绑定,所以我在控制器中实现了所有必需的代理和数据源方法。
在接口构建器中,我添加了一个NSOutlineView,并将高亮设置为SourceList,内容模式设置为View Based。因此,提供了两个默认的表格单元视图(一个标题单元格与标识符HeaderCell设置为标识符,一个数据单元格与标识符DataCell设置为标识符)
这是在界面构建器中的样子,标题单元格视图正确显示灰蓝色的textField,而数据单元格视图具有图像视图和带有正确颜色和字体设置的textField。
为了提供视图,我使用以下代码返回DataCell-view或HeaderCell-view,并根据在接口构建器中设置的相应标识符设置单元格的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;
}
运行一切看起来像下面这样。
有人能给我一些提示,为什么当选中标题单元格时,它既不加粗,也没有正确的颜色?