Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa NSOutlineView从代码中展开/折叠动画_Cocoa_Core Animation_Nsoutlineview - Fatal编程技术网

Cocoa NSOutlineView从代码中展开/折叠动画

Cocoa NSOutlineView从代码中展开/折叠动画,cocoa,core-animation,nsoutlineview,Cocoa,Core Animation,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:nod

我想知道一个如何通过代码为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];
}
如果通过默认绘制的箭头展开节点,则轮廓视图自然会设置动画

所以有一种方法…

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

我的原始代码正常,这在10.7下不可用

原文来自:

纳维


以下方法现在支持通过-animator代理设置动画:-expandItem:,-expandItem:expandChildren:,-collapseItem:,和-collapseItem:collapsechildens:。例如,要为特定项的展开设置动画:[[outlineView animator]expandItem:item]

您好,我已经成功地通过代码打开/折叠了。我有一个问题是如何设置它的动画。您可以链接到发布说明中的位置吗?完成。所述文本位于NSOutlineView部分如果您使用Swift,则在您尝试键入
outlineView.animator().ex
时,不会在Xcode中自动完成。也许是个虫子。但是,如果您手动键入它,它实际上是有效的
outlineView.animator().expandItem(item)