objective-c - NSOutlineView 缩进问题

标签 objective-c cocoa nsoutlineview

我正在使用 NSOutlineView 对象来表示文件结构,我发现它不会正确缩进任何可扩展的子项,但它会缩进不是的子项。

用一张图来说明我的意思:

NSOutlineView example

在此示例中,“AnotherFolder”是“Folder2”的子项,但它的缩进与其他缩进文件不一致。奇怪的是,“AnotherFolder”的子“AnotherFile.java”确实正确缩进(2 级)。

我已尝试设置诸如“indentationFollowsCells”之类的属性,但无济于事。这看起来应该很简单,但我无法解决。

谢谢!

编辑:根据要求提供一些额外信息:

我正在使用 NSOutlineViewDataSource 协议(protocol)来实现,这里是相关的代码:

- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item {
    return item;
}

- (id)outlineView:(NSOutlineView *)outlineView child:(NSInteger)index ofItem:(id)item {
    NSMutableDictionary* dict;
    if(item == nil) {
        dict = fileTree;
    } else {
        dict = [((MyFile*) item) children];
    }

    NSArray* keys = [dict allKeys];
    NSArray* sorted = [keys sortedArrayUsingSelector:@selector(compare:)];
    NSString* key = [sorted objectAtIndex:index];
    return [dict objectForKey:key];
}

- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item {
    return [[item children] count] > 0;
}

- (NSInteger)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item {
    if(item == nil) {
        return [fileTree count];
    }
    return [[item children] count];
}

最佳答案

尝试将大纲 View 从大纲 View 更改为普通大纲 View 。

关于objective-c - NSOutlineView 缩进问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6979212/

相关文章:

ios - 在 ios 中隐藏状态栏

ios - 向 UILabel 添加两个阴影

MacOSX/ cocoa : how to change the desktop content view/how to draw directly on the desktop background?

objective-c - 如何以编程方式从命令行启动应用程序的命令行版本?

objective-c - 即使应用程序空闲,NSOutlineView 也会不断更新

objective-c - NSOutlineView 选择不起作用

iphone - 如何在 UIBezierPath 上获取边框

objective-c - iOS 寻找新的共享文件

objective-c - CoreData 应用程序退出时间过长

objective-c - 从 NSCollectionView 拖到 NSOutlineView