UIRefreshControl无法正常工作

Art*_*nko 6 ios uirefreshcontrol swift

刷新轮停止在95%满,只有从屏幕的最顶部到达底部才能刷新.

lazy var refreshControl: UIRefreshControl = {
    let refreshControl = UIRefreshControl()
    refreshControl.addTarget(self, action:
       #selector(VFeedVC.refresh(_:)),
                            for: .valueChanged)
    return refreshControl
}()

override func viewDidLoad() {
    self.tableView.addSubview(refreshControl)
}

func refresh(_ sender: Any) {
    Metric.sendEvent("RefreshFeed")
    self.refreshControl.beginRefreshing()
    self.getFeeds(self.user.id)
}

func getFeeds(_ userId: Int) {
    VNetwork.getFeeds(userId) { feeds in
        self.feeds = feeds
        self.tableView.isHidden = self.feeds.count == 0
        self.configureCells()
        self.refreshControl.endRefreshing()
        self.tableView.reloadData()
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Mil*_*sáľ 3

这对我在 iOS 11 上有效:

override func viewDidLoad() {
    self.tableView.refreshControl = refreshControl
    self.tableView.addSubview(refreshControl)
}
Run Code Online (Sandbox Code Playgroud)

另外,您不需要显式告诉刷新控件开始刷新,因此这就足够了:

func refresh(_ sender: Any) {
    Metric.sendEvent("RefreshFeed")
    self.getFeeds(self.user.id)
}
Run Code Online (Sandbox Code Playgroud)

还要确保在回调中VNetwork.getFeeds(userId) { feeds in您位于主线程上。