NSTable insertRowsAtIndexes动画

时间:2014-12-17 18:54:34

标签: xcode macos swift

我正在调用insertRowsAtIndexesremoveRowsAtIndexes来插入或删除我的NSTableView,两者都带有动画(SlideDown用于插入,SlideUp用于删除),但我怎么能控制,以便我只能在前一个动画结束后调用插入或删除行(做一个新动作)?

因为我收到错误:

[NSMutableArray insertObjects:atIndexes:]: count of array (25) differs from count of index set (4)

如果我快速添加和删除。或者当我快速单击插入时。有什么想法吗?

感谢。

1 个答案:

答案 0 :(得分:1)

请参阅NSAnimationDelegate - (void)animationDidEnd :( NSAnimation *)动画

另外,尝试调用CALayer - (void)在任何更改之前删除AllAnimations。

CALayer的另一个问题是进行大规模更改会导致所有内存被吞噬。示例:导入海量文件,剪切/粘贴大量的表条目。 出于这个原因,我在这个区块中附上了大量的变化:

[CATransaction begin];
[CATransaction setValue:(id)kCFBooleanTrue
    forKey:kCATransactionDisableActions];   
// ... perform massive change
[CATransaction commit];