UITableViewController - 在 refreshControl.endRefreshing() 之后表格没有返回到它的初始位置

Posted

技术标签:

【中文标题】UITableViewController - 在 refreshControl.endRefreshing() 之后表格没有返回到它的初始位置【英文标题】:UITableViewController - table does not return to its initial position after refreshControl.endRefreshing() 【发布时间】:2016-09-21 18:03:07 【问题描述】:

我有一个 UITableViewController。 我在属性检查器中启用了“刷新”属性。 在 viewDidLoad 我已经分配了一个选择器(即拉到刷新操作)。 在拉动刷新操作中,作为最后一步,我调用refreshControl.endRefreshing()

刷新操作后,表格在任何使用 ios

仍在使用 Swift 2.2。

附加信息: Pull to Refresh 触发检查是否需要下载数据。如果没有,它会发出一个警报,只有一个“OK”动作来解除警报。使用以下方式管理警报:

self.presentViewController(alert, animated: true, completion: nil)

会不会是因为在alert触发前table没有回到原来的位置,所以卡在了最后知道的位置?

如果是这样,是否可以确保桌子回到原来的位置而不必在警报出现之前调用refreshControl.endRefreshing()

想法?

【问题讨论】:

【参考方案1】:

基于this 的回答(虽然我使用的是 UITableViewController 而不是 ViewController + Table),但我已经完成了以下操作:

    viewDidLoad 中将tableView.contentOffset 存储为initialContentOffset(注意这是一个CGPoint 变量) 拉取刷新后,设置tableView.contentOffset = initialContentOffset

其他问题:

    表格的初始内容偏移量似乎是 (0, 0)。正如我 有一个导航栏,我计算了 y 偏移量(在 66)。然后我将 initialContentOffset 创建为 CGPoint(0, -66) 就我而言,这个问题似乎只影响 iOS 10 上的 iPhone 6sp。不知道为什么...

【讨论】:

以上是关于UITableViewController - 在 refreshControl.endRefreshing() 之后表格没有返回到它的初始位置的主要内容,如果未能解决你的问题,请参考以下文章

我想通过在 Swift 中以编程方式将 UINavigationController 与 UITableViewController 嵌入 UITableViewController 这是 UITab

在 UITableViewController 中没有调用 cellForRowAtIndex?

在导航栏中使用 UITableViewController

在 UITableViewController 之外使用 NSFetchedResultsController

在 UINavigationController 中显示 UITableViewController

在 UITableViewController 中设置导航栏颜色。