我尝试在桌面视图上添加刷新控件,但我无法按照自己的意愿制作。
我有一个视图,其中包含一个表视图。 我的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行,并且在我们拉下第一行时从顶部取消隐藏
内置刷新控件可以实现吗?
由于
答案 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)
我真的不知道一个人是否比另一个更好,但两者似乎都有效。