2016-10-12 84 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