在NSOutlineView中仅展开根节点

时间:2014-11-13 01:50:48

标签: objective-c cocoa nsoutlineview nsindexpath nstreecontroller

我正在尝试解决一个简单的问题,即只扩展我的NSOutlineView中的根项,但没有运气。我可以扩展所有项目和所选项目,但我似乎无法弄清楚如何确定如何扩展根节点。 outlineview显示了一个文件夹树,我想显示根文件夹下可用的文件夹,但我不想展开子文件夹。

我目前尝试设置NSTreeController的selectionIndexPath,然后在outlineview中展开选择:

 NSIndexPath *indexPath;
 NSUInteger section = [indexPath indexAtPosition:0];
 NSIndexPath *ip = [NSIndexPath indexPathWithIndex:section];
 [outlineView collapseItem:nil collapseChildren:YES];

 [self.treeController setSelectionIndexPath:ip];
 [outlineView expandItem:[self.treeController selectionIndexPath]];

这不起作用。关于如何正确解决这个问题的建议非常感谢。

干杯,特隆德

解决方案: 我已经拥有的以及@PaulPatterson建议的以下组合完美地运作:

[outlineView collapseItem:nil collapseChildren:YES];
NSIndexPath *indexPath;
NSUInteger section = [indexPath indexAtPosition:0];
NSIndexPath *ip = [NSIndexPath indexPathWithIndex:section];
[outlineView collapseItem:nil collapseChildren:YES];

[self.treeController setSelectionIndexPath:ip];
id node = [[self.treeController selectedNodes] firstObject];
[outlineView expandItem:node];

1 个答案:

答案 0 :(得分:1)

问题是[-NSOutlineView expandItem:]预期的值与[-NSTreeController selectionIndexPath]返回的值不匹配吗?

当你将NSIndexPath个实例传递给expandItem:时。我感谢expandItem:对于它所期望的特定类是不可知的(文档声明它接受任何对象 - id),但我的经验是它想要一个{{ 1}} object - node返回的数组中包含的对象类型。请尝试以下方法:

[-NSTreeController selectedNodes]
相关问题