iOS:如何在没有动画的情况下在indexPath上重新加载单元格?

时间:2015-01-11 19:19:12

标签: ios uitableview

我有UITableView和细胞。当我选择单元格 - 高度增加时,当我再次选择此单元格时 - 高度降低。在方法" didSelectRowAtIndexPath"我用这个 -

NSArray *indArr = [[NSArray alloc] initWithObjects:(NSIndexPath*)[timer userInfo], nil];
[self.tableView reloadRowsAtIndexPaths:indArr withRowAnimation:UITableViewRowAnimationFade];

但是" UITableViewRowAnimationFade"动画已经褪色,细胞闪烁。 我尝试了另一种动画,但它们也不合适(

如何在没有动画的情况下避免此效果并更新单元格?

3 个答案:

答案 0 :(得分:10)

将行动画设置为.None不起作用 - 仍然有东西在继续前进。在我的例子中,一些单元格改变了高度,这导致表格视图滚动。

要保持完美,请执行以下操作:

        UIView.performWithoutAnimation({ 
            let loc = tableView.contentOffset
            tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: .None)
            tableView.contentOffset = loc
        })

答案 1 :(得分:1)

尝试一下。

UIView.setAnimationsEnabled(false)

self.yourTableView.beginUpdates()

self.yourTableView.reloadRows(at: yourIndexPath, with:UITableViewRowAnimation.none)

self.yourTableView.endUpdates()

答案 2 :(得分:-1)

查看documentation of UITableView,有一个名为UITableViewRowAnimationNone的rowAnimation值,它不会为任何动画制作动画。试试这个:

[self.tableView reloadRowsAtIndexPaths:indArr withRowAnimation:UITableViewRowAnimationNone];