这个代码的问题(在func tableView(tableView:UI表格查看,提交编辑样式编辑样式:UITableViewCellEditingStyle,对于索引路径中的行索引路径:NSIndexPath))
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
if indexPath.row > 1{
tableView.reloadRowsAtIndexPaths([NSIndexPath(forRow: indexPath.row-1, inSection: 0)], withRowAnimation: .None)
}
if tDate[activeRow].count == 0{
tableView.reloadRowsAtIndexPaths([NSIndexPath(forRow: 0, inSection: 0)], withRowAnimation: .None)
}
两个reloadRowsAtIndexPaths都是动画的,尽管withRowAnimation:.未指定任何。我在这里遗漏了什么?
2条答案
按热度按时间lf5gs5x21#
在
iOS
和OS X
中,由于某种原因(例如,该代码正由已触发动画的其他代码执行),通常会以隐式动画结束。根据我的经验,用
UITableView
和UICollectionView
控制动画可能特别困难。最好的办法可能是将对reloadRowsAtIndexPaths:withRowAnimation:
的调用放入传递给UIView
的performWithoutAnimations:
方法的闭包中:注意:在同时发生的多个更新之前和之后调用
tableView.beginUpdates()
和tableView.endUpdates()
也是一个不错的主意。weylhg0b2#
虽然Charles描述了此问题的适当解决方案,但它没有回答为什么
UITableViewRowAnimation.none
提供动画的问题。根据
UITableViewRowAnimation.none
的文档,“插入或删除的行使用默认动画。”因此,虽然.none
听起来不应该有动画,但实际上它的行为更像.automatic
。我本来想把这作为一个评论,但评论不能包含图片。请注意,这个答案并不意味着解决问题,因为查尔斯已经这样做了。这是严格的参考下一个人想知道为什么
UITableViewRowAnimation.none
提供一个动画。