iOS:reloadData 时将 UITableView 保持在同一位置

标签 ios swift uitableview

我遇到了一个烦人的问题。我正在做一个消息传递应用程序。在消息页面中,当用户滚动到顶部时,一旦最上面的单元格可见,它将加载更多消息以显示。因为在加载更多消息时, TableView 的位置在顶部(内容偏移量为 0),完成加载消息后,我调用 reloadData 并且 iOS 尝试维护相应的偏移量再次滚动到 TableView 的顶部并触发另一个加载。这就像一个无限循环,直到没有更多的消息要加载。 我试图在 reloadData 之后调用 scrollToRow 但没有成功。

所以任何可以在调用 之后保持表格 View 在相同位置的东西(即如果在加载之前,消息“a”在顶部,在加载之后,消息“a”仍然在屏幕顶部) reloadData 对我有用。

为此花了几个小时,所以我非常感谢任何帮助。谢谢

最佳答案

我不知道这是否对你有帮助,但你可以在重新加载时尝试这个-

if let indexPaths = tableView.indexPathsForVisibleRows {
    tableView.reloadRows(at: indexPaths, with: .none)
} else {
    tableView.reloadData()
}

关于iOS:reloadData 时将 UITableView 保持在同一位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49596163/

相关文章:

ios - 关闭 Controller 并返回时的 InputAccessoryView 错误

iphone - NSNotificationCenter 在 vi​​ewDidLoad : not working

ios - 从横幅/自定义操作启动应用程序时未调用 applicationDidBecomeActive

swift - 我可以扩展 Swift 保留字 "enum"吗?

swift - 获取新行而不丢失文本

ios - tableView 与 searchController 的奇怪滚动行为

android - 在原生和phonegap之间挣扎,简单的应用需求

swift - 如何知道ios本地通知何时被触发?

ios - UITableViewCell 上的阴影性能不佳

swift - UITableView CoreData - 排序描​​述符不影响标题