更改 NSOutlineView 显示三角形的位置并为子节点设置图标

Changing the position of NSOutlineView disclosure triangle and setting up icons for child nodes

提问人:Ishi 提问时间:8/22/2023 最后编辑:HangarRashIshi 更新时间:8/23/2023 访问量:38

问:

我正在创建一个像这样的 OutlineView:

My OutlineView

我想实现一个看起来像这样的视图:

Desired view

我面临的两个问题是:

  1. 我找不到在文件夹图标和名称之间移动显示三角形的方法。

  2. 我无法为子节点设置“P”图标。

对于第二个问题,这是我尝试设置图标的代码:

- (void)outlineView:(NSOutlineView *)aTableView willDisplayCell:(NSCell*)aCell forTableColumn:(NSTableColumn *)aTableColumn item:(id)item
{
    NSImage* image = nil;
    BOOL isLeaf = [item isLeaf];
    
    if ([[aTableColumn identifier] isEqualToString:@"styleIcon"]) {
        
        if (aTableView == _charOutlineView) {
             image = [QXPGeneralInterfaces imageFor:(isLeaf ? kCharacterIconImage : kFolderIconImage)];
        }
        else {
            image = [QXPGeneralInterfaces imageFor:(isLeaf ? kParagraphIconImage : kFolderIconImage)];
        }
        
        if (image != nil) {
            [aCell setImage:image];
        }
}

aCell 确实设置了图像,但不知何故它在 UI 中消失了。

Objective-C Cocoa nsoutlineview 大纲视图

评论

0赞 Willeke 8/22/2023
每个问题请问一个问题。请阅读如何提出一个好问题?

答:

0赞 Willeke 8/23/2023 #1

我找不到在文件夹图标和名称之间移动显示三角形的方法。

将文件夹图标放在第 0 列中,将标题放在第 1 列中。将(或 IB 中的“大纲”列)设置为第 1 列。outlineTableColumn