我正在尝试解决一个简单的问题,即只扩展我的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];
答案 0 :(得分:1)
问题是[-NSOutlineView expandItem:]
预期的值与[-NSTreeController selectionIndexPath]
返回的值不匹配吗?
当你将NSIndexPath
个实例传递给expandItem:
时。我感谢expandItem:
对于它所期望的特定类是不可知的(文档声明它接受任何对象 - id
),但我的经验是它想要一个{{ 1}} object - node
返回的数组中包含的对象类型。请尝试以下方法:
[-NSTreeController selectedNodes]