在与细胞一起移动的TableView上的UIRefreshControl

时间:2015-02-18 04:20:28

标签: swift uirefreshcontrol

我尝试在桌面视图上添加刷新控件,但我无法按照自己的意愿制作。

我有一个视图,其中包含一个表视图。 我的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 个答案:

答案 0 :(得分:4)

我找到了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)

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