下拉以使用静态单元格刷新UITableView

时间:2016-07-12 08:21:48

标签: ios swift uitableview uirefreshcontrol

我想在我的UITableView中下拉以刷新UITableViewController

这是我的代码,但不起作用:

class MyTableViewController: UITableViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        initComponents()
        loadData()
    }

    func refresh(sender: AnyObject) {
        loadData()
    }

    func initComponents() {
        self.refreshControl = UIRefreshControl()
        self.refreshControl?.addTarget(self, action: #selector(MyTableViewController.refresh(_:)), forControlEvents: UIControlEvents.ValueChanged)

        //other code
    }

    func loadData() {
        //code
    }
}

3 个答案:

答案 0 :(得分:1)

尝试:

 yourTableView.addSubview(self.refreshControl)
 yourTableView.alwaysBounceVertical = true

答案 1 :(得分:1)

尝试@Anil Varghese' answer

您必须添加目标,当刷新控件调用事件方法时,您可以更改数据源并重新加载表视图将帮助您重新加载数据。

var refreshControl: UIRefreshControl!

override func viewDidLoad() {
   super.viewDidLoad()

   refreshControl = UIRefreshControl()
   refreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh")
   refreshControl.addTarget(self, action: "refresh:", forControlEvents: UIControlEvents.ValueChanged)
   tableView.addSubview(refreshControl) // not required when using UITableViewController
}

func refresh(sender:AnyObject) {
   // Code to refresh table view
}

答案 2 :(得分:0)

我在故事板中使用UITableViewController测试您的代码。它运作良好!当我下拉刷新时,功能"刷新"作品。所以,你是什么意思"不能工作"?也许你忘了设置" Custom Class"在故事板中?

此外,我同意@ Paulw11,使用动态细胞更好。