我似乎无法找到有效的解决方案。我已经尝试了其他可用的解决方案,在没有UITableViewController的情况下在UITableView中实现pull to refresh,但没有任何反应。
这是相关代码:
@IBOutlet weak var tableView: UITableView!
var peopleRefreshControl:UIRefreshControl!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
peopleRefreshControl = UIRefreshControl()
peopleRefreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh")
peopleRefreshControl.addTarget(self, action: "refresh", forControlEvents: .ValueChanged)
// I also tried this
// peopleRefreshControl.addTarget(self, action: Selector("refresh"), forControlEvents: .ValueChanged)
tableView.addSubview(peopleRefreshControl)
}
func refresh(){
println("what!")
}
当我下拉时,我可以看到圆圈旋转和文本“拉到刷新”,但是从不调用“刷新”功能。我究竟做错了什么?我还应该做些什么吗?我没有对tableView做任何特别的事情,除了在没有使用时隐藏它。这可能是个问题吗?
编辑:我更新了代码以包含“:”,如下所示,但绝对没有变化。我仍然看到圆圈旋转和文本“拉动刷新”,但文字“什么!”永远不会打印出来。
override func viewDidLoad() {
super.viewDidLoad()
...
peopleRefreshControl.addTarget(self, action: "refresh:", forControlEvents: .ValueChanged)
...
}
func refresh(sender:UIRefreshControl){
println("what!")
}
我还应该做些什么吗?
答案 0 :(得分:0)
这是因为你没有在viewDidLoad中的单词refresh之后添加“:”。 没有它,刷新功能将无法运行。 尝试使用此代码...
var refreshControl:UIRefreshControl!
override func viewDidLoad()
{
super.viewDidLoad()
self.refreshControl = UIRefreshControl()
self.refreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh")
//look at the : after "refresh"
self.refreshControl.addTarget(self, action: "refresh:", forControlEvents: UIControlEvents.ValueChanged)
self.tableView.addSubview(refreshControl)
}
答案 1 :(得分:-1)
您的原型不适合目标操作。该操作将发件人作为参数,您需要在选择器上使用:
:
@IBOutlet weak var tableView: UITableView!
var peopleRefreshControl:UIRefreshControl!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
peopleRefreshControl = UIRefreshControl()
peopleRefreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh")
peopleRefreshControl.addTarget(self, action: "refresh:", forControlEvents: .ValueChanged)
tableView.addSubview(peopleRefreshControl)
}
func refresh(sender:AnyObject){
println("what!")
}