下拉刷新不执行刷新功能?

Pull to refresh not performing refreshing function?

我正在编写一个应用程序,并设置了查询数据库的查询和追加函数,并将提取的信息附加到一组数组(然后用于遍历 table 视图中的单元格)。查询函数正常工作,因为它们在 viewDidLoad() 中被调用。我想要一个拉动刷新功能来额外调用函数(从而更新 table 单元格),但它无法正常工作。这是相关代码:

var refreshControl = UIRefreshControl()
    override func viewDidLoad() {
            super.viewDidLoad()

            myQueryandAppend(completion: {
                self.tableView.reloadData()
            })

            upComingQueryandAppend(completion: {
                self.tableView.reloadData()
            })

            refreshControl = UIRefreshControl()
            refreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh")
            refreshControl.addTarget(self, action: #selector(MainPageVC.refresh(_:)), for: UIControlEvents.valueChanged)

        }
        func refresh(_ sender: AnyObject){

            myQueryandAppend(completion: {
                self.tableView.reloadData()
                self.refreshControl.endRefreshing()

            })
            upComingQueryandAppend(completion:{

                self.tableView.reloadData()
                self.refreshControl.endRefreshing()

            })

        }

不完全确定为什么它不起作用,因为我在不同的视图控制器(具有不同的 query/append 功能)中有一个非常相似的设置,可以正常使用下拉刷新。

如果 class 是 UIViewController 而不是 UITableViewController,您需要手动将 refreshControl 作为子视图添加到 tableView

tableView.addSubview(refreshControl)

所以,viewDidLoad() 应该是这样的:

override func viewDidLoad() {
    super.viewDidLoad()


    myQueryandAppend(completion: {
        self.tableView.reloadData()
    })

    upComingQueryandAppend(completion: {
        self.tableView.reloadData()
    })

    refreshControl = UIRefreshControl()
    refreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh")
    refreshControl.addTarget(self, action: #selector(MainPageVC.refresh(_:)), for: UIControlEvents.valueChanged)
    // here is the extra job!
    tableView.addSubview(refreshControl)
}

在 iOS 10+ 中,您可以直接将刷新控件分配给表视图/滚动视图的 .RefreshControl 属性

tableView.RefreshControl = refreshControl