我想知道一个动画 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];
}
如果您通过默认绘制的箭头展开节点,则大纲视图会自然生成动画 所以有办法...
答案 0 :(得分:11)
我的原始代码没问题,这在10.7
下无法使用来自Application Kit Release Notes for OS X v10.8的原始文字:
NSOutlineView
以下方法现在支持通过-animator代理进行动画处理:-expandItem:, - expandItem:expandChildren:,--collapseItem:和-collapseItem:collapseChildren:。例如,为特定项目的扩展设置动画:[[outlineView animator] expandItem:item];
答案 1 :(得分:0)
问题很可能是node
您传递给collapseItem:
。您需要传递树控制器用来表示节点的对象,而不是数据模型中的实际节点。如果您正在使用NSTreeController,那么您需要遍历从-[NSTreeController arrangedObjects]
返回的结构,以找到代表您的数据模型对象的节点。