Ios 使用Swift 3拉动刷新和Alamofire
我使用Alamofire从web URL(JSON)获取数据。我正在尝试在我的项目中实现pull toIos 使用Swift 3拉动刷新和Alamofire,ios,json,swift,swift3,alamofire,Ios,Json,Swift,Swift3,Alamofire,我使用Alamofire从web URL(JSON)获取数据。我正在尝试在我的项目中实现pull toRefreshControl。我已经做了,但不知道它是否正确,或者刷新时数据是否正在更新。我的代码是: var refresh = UIRefreshControl() refresh.addTarget(self, action: #selector(self.refreshData), for: UIControlEvents.valueChanged) func refreshData
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()
})
}
这是否正确?您的操作正确,但需要在主线程上重新加载
tableView
并停止UIRefreshControl
DispatchQueue.main.async {
self.tableView.reloadData()
self.refresh.endRefreshing()
}
注意:您需要使用
viewDidLoad
或Interface builder将其设置一次,而不是始终按API请求设置separatorStyle
。操作正确,但需要在主线程上重新加载tableView
并停止UIRefreshControl
DispatchQueue.main.async {
self.tableView.reloadData()
self.refresh.endRefreshing()
}
注意:您需要使用
viewDidLoad
或Interface builder设置一次,而不是设置separatorStyle
始终按API请求。因此,我将把这个Nirav放在哪里呢?与当前重新加载tableView的位置相同,只需在主线程中添加这两行即可。Nirav,以上所有代码(包括我的代码)是否都必须进入覆盖func viewDidLoad(){super.viewDidLoad())
?在viewDidLoad
中,您需要只设置这一行self.tableView.separatorStyle=UITableViewCellSeparatorStyle.singleLine
,那么我应该把这个Nirav放在哪里呢?在当前重新加载tableView的同一个位置,只需在主线程中添加这两行即可。Nirav,包括我在内的所有上述代码都必须这样做吗进入override func viewDidLoad(){super.viewDidLoad()
?在viewDidLoad
中,只需设置此行self.tableView.separatorStyle=UITableViewCellSeparatorStyle.singleLine