【问题标题】:NSOutlineView indentation issueNSOutlineView 缩进问题
【发布时间】:2011-08-08 08:02:45
【问题描述】:

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

这是一张图片来说明我的意思:

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

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

谢谢!

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

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

- (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];
}

【问题讨论】:

  • 您没有提供任何技术细节。您使用的是 Bindings 还是 NSOutlineViewDataSource 协议?如果是前者,请发布您的绑定的完整描述;如果是后者,请发布您的数据源协议实现的完整代码清单。
  • @Joshua 确定,更新了原帖
  • 您确定它不会缩进 all 可扩展的子级,还是仅缩进第二级的子级?如果您有深度嵌套的可扩展项目怎么办?
  • @jtbandes:好点。再次检查后,似乎可扩展项总是比缩进应低 1 级。在检查另一个级别时,我注意到它缩进了 1 级,而应该是 2 级。
  • 尝试将大纲视图从 Source 大纲视图更改为普通视图。

标签: objective-c cocoa nsoutlineview


【解决方案1】:

尝试将大纲视图从 Source 大纲视图更改为普通视图。

【讨论】:

  • +1 哇,谢谢。这个问题快把我逼疯了!我花了一段时间才弄清楚你的意思是界面生成器中的突出显示样式......但我发现它非常感谢。
【解决方案2】:

我现在遇到了这个问题,发现这个帖子发布九年后,问题仍然存在,这有点奇怪。

这种行为已融入 Source 样式:标准内容的第一行与标题单元格对齐而不是缩进,因此所有内容都移动了一个级别。

如果您使用标题单元格,则需要这种行为,一切都很好。如果您不想使用标题单元格,则不使用 SourceList 是您唯一的选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多