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 之外使用 NSFetchedResultsController