【问题标题】:Pull to refresh and Alamofire using Swift 3使用 Swift 3 拉动刷新和 Alamofire
【发布时间】:2016-11-24 12:32:29
【问题描述】:

我正在使用 Alamofire 从 Web URL(JSON) 获取数据。我正在尝试在我的项目中实现对RefreshControl 的拉取。我已经完成了,但不知道它是否正确,或者刷新时数据是否正在更新。我的代码是:

var refresh = UIRefreshControl()

refresh.addTarget(self, action: #selector(self.refreshData), for: UIControlEvents.valueChanged)

func refreshData() {

    Alamofire.request("https://www.example.com/api").responseJSON(completionHandler: {
        response in
        self.parseData(JSONData: response.data!)
        self.tableView.separatorStyle = UITableViewCellSeparatorStyle.singleLine

        self.tableView.reloadData()
        self.refresh.endRefreshing()


    })        
}

这是正确的吗?

【问题讨论】:

    标签: ios json swift swift3 alamofire


    【解决方案1】:

    您做得正确,但您需要重新加载 tableView 并在主线程上停止 UIRefreshControl

    DispatchQueue.main.async {
        self.tableView.reloadData()
        self.refresh.endRefreshing()             
    }
    

    注意:您需要使用 viewDidLoad 或 Interface builder 设置一次,而不是始终在 API 请求上设置 separatorStyle

    【讨论】:

    • 那么我会把这个 Nirav 放在哪里呢?
    • 与您当前重新加载 tableView 的位置相同,只需在主线程中添加这两行即可。
    • Nirav,包括我在内的所有上述代码都必须放在override func viewDidLoad() { super.viewDidLoad() 中吗?
    • viewDidLoad 你只需要设置这一行self.tableView.separatorStyle = UITableViewCellSeparatorStyle.singleLine
    猜你喜欢
    • 1970-01-01
    • 2018-12-16
    • 1970-01-01
    • 2017-01-20
    • 2018-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-15
    相关资源
    最近更新 更多