2016-10-12 85 views
0

我在网上有我的json文件,我从那里检索数据到我的应用程序。我的应用程序是关于国家的,所以当我在我的json文件中添加一个新国家时,我想要去我的应用程序,并且当我拉时,我想显示所有县和我在我的json文件中创建的新国家。在Swift 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) 

} 

+0

您必须添加一个选择,你必须调用'endRefreshing'为'UIRefreshControl' –

+0

嗨Rajan,我必须在哪里添加选择器?当我的json文件中的所有数据都被加载时,endRefreshing应该被调用。 – Mario

回答

0

试试下面的代码: -

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() 
     }  
} 
+0

只要API的响应来临,您应该调用重载数据 –

+0

由于在主线程上调用API,所以仍然没有效果。您只需抓住主线程并重新载入与之前代码相同的表格。 –

+0

嗨Sharpkits,我可以与我分享我的代码(项目),所以你可以帮助我。我已经尝试过你发给我的代码,但它没有用,也许我做错了什么。非常感谢你! – Mario