调用 reloadData 时 UITableView 有不需要的动画

Posted

技术标签:

【中文标题】调用 reloadData 时 UITableView 有不需要的动画【英文标题】:UITableView has unwanted animation when reloadData is called 【发布时间】:2017-10-23 03:29:51 【问题描述】:

我有一个 UITableView,如果我稍微滚动一下内容然后调用reloadData,表格似乎会在重新加载数据时进行滚动动画。

viewDidLoad 中调用的表设置:

func setupTableView() 
        tableView.register(UINib(nibName: "AnswerCell", bundle: nil), forCellReuseIdentifier: "AnswerCell")
        tableView.register(UINib(nibName: "QuizDescription", bundle: nil), forCellReuseIdentifier: "QuizDescription")
        tableView.register(UINib(nibName: "QuestionNumberCell", bundle: nil), forCellReuseIdentifier: "QuestionNumberCell")
        tableView.tableFooterView = UIView()
        tableView.estimatedRowHeight = 135
        tableView.rowHeight = UITableViewAutomaticDimension
        tableView.delegate = self
        tableView.dataSource = self
    

当提交按钮被按下时,tableView.reloadData() 被调用。任何想法为什么会发生这个动画?我能做些什么来阻止它?

【问题讨论】:

你解决了吗?我有同样的问题 【参考方案1】:

您需要先重置位置,然后再调用reloadData

 tableView.contentOffset = .zero

【讨论】:

试过这个。虽然仍然有动画效果。【参考方案2】:

您可以尝试在performWithoutAnimation: 块中重新加载tableview:

UIView.performWithoutAnimation 
    self.tableView.reloadData()

【讨论】:

以上是关于调用 reloadData 时 UITableView 有不需要的动画的主要内容,如果未能解决你的问题,请参考以下文章

调用函数reloadData时如何对UITableView进行swap效果

集合单元在每个 reloadData() 调用 Swift 5 时删除项目

UICollectionView 在调用 reloadData 时不会立即更新,而是在 30-60 秒后随机更新

未调用 tableView reloadData cellForRowAtIndexPath

reloadData 没有调用 cellForItemAt

reloadData 没有调用 cellForRowAtIndexPath