插入UITableView行而不进行任何动画

时间:2012-12-17 19:21:01

标签: objective-c ios uitableview

[self.tableView insertRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:row inSection:0]] 
                      withRowAnimation:UITableViewRowAnimationNone];

当我插入的那一行向下滑动时,每行都这样做。我希望他们立即跳到新的地方。我不想打电话给reloadData,因为那时我的所有细胞都会重新绘制。

是否可以删除此动画?

5 个答案:

答案 0 :(得分:48)

这对我有用:

[UIView setAnimationsEnabled:NO];
[self.tableView beginUpdates];

[self.tableView insertRowsAtIndexPaths:indexPath
                      withRowAnimation:UITableViewRowAnimationNone];

[self.tableView endUpdates];
[UIView setAnimationsEnabled:YES];

希望这有帮助。

答案 1 :(得分:14)

这也有效

[UIView performWithoutAnimation:^{
    [self.tableView insertRowsAtIndexPaths:indexPaths:withRowAnimation:UITableViewRowAnimationNone];
});

答案 2 :(得分:2)

快速示例(来自我的聊天)

UIView.performWithoutAnimation {
        messagesTable.insertRows(at: [IndexPath(row: messages.count - 1, section: 0)], with: .none)
    }

答案 3 :(得分:0)

不幸的是,我遇到了同样的问题,我没办法删除动画。

必须是UITableViewRowAnimationNone动画类型的错误,因为iOS(任何版本)似乎都不尊重它。

答案 4 :(得分:0)

如果您更新UITableView的dataSource并调用[tableView reloadData]而不是手动插入行,则表格将刷新而不会有任何动画。