使用 Swift 3 拉动刷新和 Alamofire
Posted
技术标签:
【中文标题】使用 Swift 3 拉动刷新和 Alamofire【英文标题】:Pull to refresh and Alamofire using Swift 3 【发布时间】: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()
)
这是正确的吗?
【问题讨论】:
【参考方案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
以上是关于使用 Swift 3 拉动刷新和 Alamofire的主要内容,如果未能解决你的问题,请参考以下文章
如何在iOS swift中的表格视图按钮中进行拉动刷新[重复]