Ios 如何防止两个tableview单元格动画同时发生

Ios 如何防止两个tableview单元格动画同时发生,ios,swift,uitableview,animation,Ios,Swift,Uitableview,Animation,我有一个具有可扩展单元格的tableview。当你点击一个单元格时,一个日期选择器显示为inline。当您单击另一个时,将显示另一种选择器。我已经设置好了,所以当你点击任何单元格时,任何打开的单元格都会关闭,以确保一次只打开一个单元格 我的问题是:a)第一个单元格关闭和b)第二个单元格打开的动画重叠,看起来一点也不好 当我单击一个单元时,我希望展开的单元关闭,然后第二个单元展开,有足够的延迟,这样动画就不会重叠 我在网上寻找了一个快速的解决方案,但一直没有找到答案。我对iOS开发相当陌生,所以对

我有一个具有可扩展单元格的tableview。当你点击一个单元格时,一个日期选择器显示为inline。当您单击另一个时,将显示另一种选择器。我已经设置好了,所以当你点击任何单元格时,任何打开的单元格都会关闭,以确保一次只打开一个单元格

我的问题是:a)第一个单元格关闭和b)第二个单元格打开的动画重叠,看起来一点也不好

当我单击一个单元时,我希望展开的单元关闭,然后第二个单元展开,有足够的延迟,这样动画就不会重叠

我在网上寻找了一个快速的解决方案,但一直没有找到答案。我对iOS开发相当陌生,所以对UIAnimation等不太了解

使用Xcode 7.2,Swift


如果您有任何帮助,我们将不胜感激。

您可以尝试使用填空

UIView.animateWithDuration(0.5, delay: 0.0, options: UIViewAnimationOptions.CurveLinear, animations: { 
    //your first animation
}, completion: {(finished:Bool) in
    //your seconde animation (or whatever you want to be done when the first one is completed)
})

您可以使用CATTransaction,请参见:

您可以尝试强制它们在同一个线程上运行,而不是使用并行线程

例如,以下是如何强制在主线程上执行操作:

dispatch_async(dispatch_get_main_queue()) {
    //your animation
}
可能还有其他一些解决方案,
祝你好运

最后我需要使用CATransaction。我无法使用animationWithDuration和completion,因为在animationWithDuration中放置关闭第一个单元格的代码(RemoveCellatineXPath)会导致TableView动画发生一些奇怪的事情。事实上,insertRowsAtIndexPath或RemoveOwsatindexpath都不愿意被放置在具有持续时间的动画中。但当我使用CATTransaction时,将第二个动画放置在完成块中,效果很好。感谢@buzz的回答。