NSOutlineView 从代码展开/折叠动画



我想知道如何从代码中对NSOutlineView的树节点的扩展/折叠进行动画处理

// this works ok but doesn't animate  
NSTreeNode *node = [self.outlineView itemAtRow:self.outlineView.clickedRow];
if([self.outlineView isItemExpanded:node])
{
    [self.outlineView.animator collapseItem:node];
}else{
    [self.outlineView.animator expandItem:node];
}

如果通过默认绘制的箭头
展开节点,则轮廓视图自然会动画化所以有一种方法...

我的原始代码还可以,只是在 10.7 下不可用

OS X v10.8 应用程序工具包发行说明中的原始文本:

NSOutlineView

以下方法现在支持通过 -animator 代理进行动画处理:-expandItem:、-expandItem:expandChildren:、-collapseItem:和 -collapseItem:collapseChildren:。例如,要对特定项目的扩展进行动画处理:[[大纲视图动画器] 展开项目:项目];

问题可能是您传递给collapseItem: node。 您需要从数据模型中传递树控制器用于表示节点的对象,而不是实际节点。 如果您使用的是 NSTreeController,则需要遍历从-[NSTreeController arrangedObjects]返回的结构,以找到表示数据模型对象的节点。

最新更新