在没有UITableViewController的情况下拉动刷新UITableView

时间:2015-06-18 20:06:55

标签: ios swift uitableview cocoa-touch pull-to-refresh

我似乎无法找到有效的解决方案。我已经尝试了其他可用的解决方案,在没有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!")
}

我还应该做些什么吗?

2 个答案:

答案 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!")
}
相关问题