我想知道如何从代码中对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]
返回的结构,以找到表示数据模型对象的节点。