以编程方式扩展NSOutlineView

时间:2013-08-12 12:50:02

标签: objective-c macos cocoa nsoutlineview

我的要求就是这样,

在NSOutlineview之上会有一个搜索文本字段,而NSOutline视图可能包含嵌套的组,

如果一个项目/行与搜索查询匹配,那么应该显示它,其所有父节点直到根级别,

我的方式如下,

1 - 根据用户输入的内容,重新构建NSOutlineview数据源(Nothing除了NSArray)

2 - 已实施所有委托方法,

现在我的问题是群组没有自动扩展,我知道我应该打电话

-expandItem:expandChildren:,

但是我的问题来自于我应该称之为的地方,我在重新加载数据后调用它但它无法正常工作

我试着把它称为这样的东西,,,,

- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)aTableColumn byItem:(id)item {
    if(aTableColumn == nil){
        [self log:@"aTableColumn is NIL "];
        return nil;
    }   
    if([[aTableColumn identifier] isEqualToString:@"firstColumn"] ){
        if ( [myOutlineView shouldExpandIt:item]){
            [myOutineView expandItem:item];
        }
        return item;
    }
    return item;
}

但它的错误可能会发生递归循环

任何其他方式实现相同。

1 个答案:

答案 0 :(得分:1)

感谢各位调查,

通过放置日志,我发现它似乎是[NSOutlineView reloadData]似乎是阻塞调用,

所以在那之后,如果我需要扩展/折叠组,我正在使用

  [pCTOutlineView expandItem:pValue];

并且到目前为止工作....