objective-c - NSOutlineView : how to make parent items bold?

标签 objective-c macos cocoa

我有一个 NSOutlineView,其中包含父项目和子项目的列表。

将父项(带有开始箭头的项)设置为粗体文本的最简单方法是什么?

谢谢

最佳答案

如果您使用基于单元格的大纲 View ,则可以使用此委托(delegate)方法将父项加粗:

// Assuming you use NSTextFieldCell
- (void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item {
    if ([self outlineView:outlineView numberOfChildrenOfItem:item] > 0) {
        [(NSCell *)cell setFont: [NSFont boldSystemFontOfSize: ((NSCell *)cell).font.pointSize]];
    } else {
        [(NSCell *)cell setFont: [NSFont systemFontOfSize: ((NSCell *)cell).font.pointSize]];
    }
}

否则,在基于 View 的大纲 View 中,您可以执行以下操作:

- (NSView *)outlineView:(NSOutlineView *)outlineView viewForTableColumn:(NSTableColumn *)tableColumn item:(id)item {
    NSTableCellView *cellView = [outlineView makeViewWithIdentifier:@"MyIdentifier" owner:self];
    if ([self outlineView:outlineView numberOfChildrenOfItem:item] > 0) {
        [cellView.textField setFont: [NSFont boldSystemFontOfSize: cellView.textField.font.pointSize]];
    } else {
        [cellView.textField setFont: [NSFont systemFontOfSize: cellView.textField.font.pointSize]];
    }

    // do whatever else you do
    return cellView;
}

或者,NSOutlineViewDelegate-outlineView:isGroupItem: 可能就是您真正要寻找的:https://developer.apple.com/library/mac/documentation/cocoa/reference/NSOutlineViewDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intfm/NSOutlineViewDelegate/outlineView:isGroupItem :

关于objective-c - NSOutlineView : how to make parent items bold?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25076136/

相关文章:

c# - 静态属性未在类中通过绑定(bind)实例化

ios - 在 swift 中导入 swift 链接的 objc 类

string - 由于字符串中的 unicode 字符导致应用程序崩溃

xcode - 我可以使用没有 max 的 NSStepper 吗?

ios - 更改 NSAttributedString 中子字符串的属性

swift - 发送 UDP 数据包的问题(milight,limitlessled)

c++ - Mac OS X 上的复制文件功能

java - 如何在 Eclipse Mars 中从 Git 更新项目

objective-c - NSMutableArray 计数总是返回零

objective-c - 如何将 libpng 与 OpenGL 一起用于 2D 游戏?