与单元格一起移动的 TableView 上的 UIRefreshControl

Posted

技术标签:

【中文标题】与单元格一起移动的 TableView 上的 UIRefreshControl【英文标题】:UIRefreshControl on a TableView moving with the cells 【发布时间】:2015-02-18 04:20:27 【问题描述】:

我尝试在我的表格视图上添加一个刷新控件,但我无法按照我的意愿进行操作。

我有一个包含表格视图等内容的视图。 我的 ViewController 的 viewDidLoad 函数如下:

override func viewDidLoad() 
    super.viewDidLoad()

    // set the refresh control
    self.refreshControl = UIRefreshControl()
    self.refreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh")
    self.refreshControl.addTarget(self, action: "getData", forControlEvents: UIControlEvents.ValueChanged)
    self.tableView.addSubview(refreshControl)

除了当我拉下行以触发刷新控件时,一切都正常工作,刷新控件出现在第一行的后面并最终出现在第一行的顶部(正常,我将这些行拉下......) .

我想在许多应用程序中得到的是,当您拉下行时,刷新控件的行为就像它是行 #-1 并且在我们拉下第一行时立即从顶部取消隐藏.

内置刷新控件可以实现吗?

谢谢

【问题讨论】:

【参考方案1】:

嗯,我找到了this的部分答案

它不能解决我的问题,但至少它更好......现在“拉刷新”不会出现在我拉的第一行...... 所以在 Swift 中你可以这样做:

替换:

self.refreshControl = UIRefreshControl()
self.refreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh")
self.refreshControl.addTarget(self, action: "getData", forControlEvents: UIControlEvents.ValueChanged)
self.tableView.addSubview(refreshControl)

作者:

let tableViewController = UITableViewController()
tableViewController.tableView = self.tableView

self.refreshControl = UIRefreshControl()
self.refreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh")
self.refreshControl.addTarget(self, action: "getData", forControlEvents: UIControlEvents.ValueChanged)
tableViewController.refreshControl = self.refreshControl

或者只是将它添加到第一部分而不是用第二部分替换它。

self.tableView.insertSubview(refreshControl, atIndex: 0)

我真的不知道一种方法是否比另一种更好,但两者似乎都有效。

【讨论】:

以上是关于与单元格一起移动的 TableView 上的 UIRefreshControl的主要内容,如果未能解决你的问题,请参考以下文章

Tableview UiDesign复杂性[关闭]

XCUITest:与具有许多单元格的表格进行交互

`tableView` 在选择单元格时向上移动

如何通过单击 tableview 单元格上的按钮获取文档 ID?

Tableview单元格边框没有迅速占据全宽

将超过一半的单元格移动到另一个部分时,Tableview 崩溃