Bin*_*cks 5 macos cocoa nsoutlineview
我目前正在尝试在我的Cocoa应用程序中使用基于视图的新NSOutlineView.因为我没有使用绑定,所以我在控制器中实现了所有必需的委托和数据源方法.
在界面构建器中,我添加了一个NSOutlineView,突出显示设置为SourceList,内容模式设置为View Based.因此,提供了两个默认表格单元视图(一个HeaderCell设置为标识符的Header单元格和一个DataCell设置为标识符的数据单元格)
这就是它在界面构建器中的样子,标题单元格视图正确显示灰蓝色textField,而数据单元格视图具有图像视图和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;
}
Run Code Online (Sandbox Code Playgroud)
运行它看起来如下所示的一切.

任何人都可以向我提供提示,为什么标题单元格在选择时既不是粗体,也不是正确的颜色?
Boa*_*ler 12
您需要实现-outlineView:isGroupItem:delegate方法并为标题行返回YES.这将标准化字体并使用右侧的"显示/隐藏"按钮替换左侧的显示三角形.您仍然需要手动大写字符串以获得完整效果.
我不确定上面的组行委托方法是否使选择样式看起来没问题.但是,您通常不希望在源列表中可以选择标题行,您可以通过-outlineView:shouldSelectItem:delegate方法为标题项返回NO.
| 归档时间: |
|
| 查看次数: |
4353 次 |
| 最近记录: |