拉动刷新 Swift JSON 数据
Posted
技术标签:
【中文标题】拉动刷新 Swift JSON 数据【英文标题】:Pull to refresh in Swift JSON data 【发布时间】:2016-10-12 16:06:36 【问题描述】:我在网络上有我的 json 文件,我正在从那里将数据检索到我的应用程序。我的应用是关于国家的,所以当我在我的 json 文件中添加一个新国家时,我想转到我的应用,当我拉动时,我想显示我在我的 json 文件中创建的所有县和新国家。
我已将 UIRefreshControl() 添加到我的应用程序中,但它不会刷新,而且“加载图标”也永远不会消失。这是一张图片:
the "loading icon" never disappears
当我在我的 json 文件中创建一个新国家(例如:英格兰)时,我该怎么做?并在应用中加载所有国家/地区时使“加载图标”消失。
请帮我解决这个问题。非常感谢!
这是我的UIRefreshControl
代码:
import UIKit
class TableController: UITableViewController
var TableData:Array< String > = Array < String >()
var refresh = UIRefreshControl()
override func viewDidLoad()
super.viewDidLoad()
get_data_from_url("https://mylink")
refresh.tintColor = UIColor.darkGray
self.tableView.addSubview(refresh)
【问题讨论】:
你必须添加一个选择器,你必须为UIRefreshControl
调用endRefreshing
嗨 Rajan,我必须在哪里添加选择器?当我的 json 文件中的所有数据都被加载时,应该调用 endRefreshing。
【参考方案1】:
试试下面的代码:-
import UIKit
class TableController: UITableViewController
var TableData:Array< String > = Array < String >()
var refresh = UIRefreshControl()
override func viewDidLoad()
super.viewDidLoad()
refresh.tintColor = UIColor.darkGray
refresh.addTarget(self, action: "refresh:", forControlEvents: UIControlEvents.ValueChanged)
self.tableView.addSubview(refresh)
func refresh(sender:AnyObject)
// Code to refresh table view
get_data_from_url("https://mylink") //Call this on different thread and put the below two lines in completion handler of same thread
DispatchQueue.main.sync
self.tableView.reloadData()
self.refreshControl?.endRefreshing()
【讨论】:
你应该在 API 的响应到来时调用 reload data 仍然没有效果,因为在主线程上调用了 API。您只是抓住了主线程并重新加载了与早期代码相同的表。 嗨 Sharpkits,我可以与您分享我的代码(项目),以便您可以帮助我。我已经尝试了您发送给我的代码,但它不起作用,也许我做错了什么。非常感谢! @RajanMaheshwari:请仔细阅读,因为我已经在这里评论过,在不同的线程上调用了这个。阅读和评论.. 干杯!! @Sharpkits 为什么不使用相同的调度后台线程并在主线程上更新 UI,而不是在代码中注释“在不同的线程上调用...”。这会让事情变得更好以上是关于拉动刷新 Swift JSON 数据的主要内容,如果未能解决你的问题,请参考以下文章
如何在iOS swift中的表格视图按钮中进行拉动刷新[重复]