【发布时间】:2013-08-12 12:50:02
【问题描述】:
我的要求是这样的,
在 NSOutlineview 之上会有一个搜索文本字段,并且 NSOutline 视图可能包含嵌套的组,
如果一个项目/行与搜索查询匹配,那么它应该被显示,它的所有父节点直到根级别,
我的做法如下,
1 -- 根据用户输入的内容,重新构建 NSOutlineview 数据源(Nothing but an NSArray)
2 -- 已实现所有委托方法,
现在我的问题是 Group 没有自动扩展,我知道我应该调用
-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;
}
但它的错误可能是递归循环
达到相同目的的任何其他方式。
【问题讨论】:
-
我会确保在处理其他委托或数据源方法时不会调用它。您可以尝试进行延迟调用,例如在主线程上使用
dispatch_async。 -
当你说你正在“重建数据源”时你是什么意思,你是在删除对象等吗?您的搜索功能是否从 NSArray 中过滤/删除对象?
标签: objective-c macos cocoa nsoutlineview