RefreshControl不会隐藏

问题描述 投票:1回答:1

刷新进度完成后,我的刷新控件不会消失。它仍然是动画,即使我调用endRefreshing()。

import UIKit

class MyTableViewController: UITableViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        refreshControl = UIRefreshControl()
        refreshControl?.attributedTitle = NSAttributedString(string: "Pull to refresh")
        refreshControl?.addTarget(self, action: #selector(self.refresh), for: UIControlEvents.valueChanged)
        tableView.addSubview(refreshControl!)

        setData()
    }

    func setData(){
        ApiClient.sharedInstance().getData{(myData, error) in
            if (myData != nil){
                DispatchQueue.main.async {
                    self.myLabel.text = myData
                    self.refreshControl?.endRefreshing()
                }
            }

            if (error != nil){
                print(error)
            }
        }
    }

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

}

你能帮助我吗?

ios swift tableview refresh
1个回答
0
投票

beginUpdates和endUpdates完成了魔术。

这个让我疯了1个小时。最后,当我的网络调用完成并刷新表视图时,这个部分工作。

 class TransactionsViewConttroller : MyBaseTableViewController{
    override func viewDidLoad() {
        super.viewDidLoad()
        self.refreshControl?.addTarget(self, action: #selector(refresh), for: .valueChanged)
    }
    @objc func refresh() {
        justRefreshTransactions()  
    }

    private func justRefreshTransactions(){
         ServiceRequest.getLatestTransactions(completionBlock : {(error, errorMsg,result) in 
                 self.stopRefrshIndic()
         })
    }

    private func stopRefrshIndic(){
        DispatchQueue.main.async {
            self.tableView.beginUpdates()
            self.refreshControl?.endRefreshing()
            self.tableView.endUpdates()
        }
    }

}

© www.soinside.com 2019 - 2024. All rights reserved.