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

Nic*_*ico 2 uirefreshcontrol swift

我试图在表视图上添加刷新控件,但无法按我的要求进行。

我有一个视图,其中包含一个表视图。我的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)
}
Run Code Online (Sandbox Code Playgroud)

一切正常,除了当我下拉行以触发刷新控件时,刷新控件出现在第一行之后,并终止于第一行的顶部(正常情况下,我将这些行下拉...)。

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

内置的刷新控件有可能吗?

谢谢

Nic*_*ico 5

好吧,我找到了答案的一部分,与

它不能解决我的问题,但至少可以解决问题……现在,“ Pull to refresh”不会在我拉动时出现在第一行中。因此在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)
Run Code Online (Sandbox Code Playgroud)

由:

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
Run Code Online (Sandbox Code Playgroud)

或者只是将其添加到第一部分,而不是用第二部分代替。

self.tableView.insertSubview(refreshControl, atIndex: 0)
Run Code Online (Sandbox Code Playgroud)

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