拉动刷新 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 数据的主要内容,如果未能解决你的问题,请参考以下文章

拉动刷新不起作用

拉动刷新uitableview json解析数据

如何在iOS swift中的表格视图按钮中进行拉动刷新[重复]

是否可以在没有表格视图的情况下创建拉动刷新?

UITableView上方的自定义UIView(用户拉动刷新时)

RefreshControl 数据重复每次在 React Native 中拉动以刷新 ScrollView