2016-10-12 4 views
0

У меня есть файл json в Интернете, и я извлекаю данные в свое приложение оттуда. Мое приложение касается стран, поэтому, когда я добавляю новую страну в свой json-файл, я хочу перейти в свое приложение, и когда я вытащу, я хочу показать все страны и новую страну, которую я создал в своем json-файле.Потяните, чтобы обновить данные Swift JSON

Я добавил UIRefreshControl() в свое приложение, но оно не обновляется, а также значок загрузки не исчезает. Здесь ıA изображение:

the "loading icon" never disappears

Как я могу это сделать, когда я создаю новую страну в моем файле JSON (например: Англия) я тяну экран в моем приложении, а затем у меня в App все страны + Англия. И заставьте «значок загрузки» исчезнуть, когда все приложения загружены в приложение.

Пожалуйста, помогите мне с этим. Большое спасибо!

Вот мой 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

Привет, Раджан, где мне нужно добавить селектор? EndRefreshing может быть вызван, когда все данные в моем json-файле были загружены. – 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

вы должны были называть reload данные всякий раз, когда ответ API появляется –

+0

По-прежнему не действует, поскольку API вызывается в основном потоке. Вы просто захватили основной поток и перезагрузили таблицу, которая была такой же, как и предыдущий код. –

+0

Привет, Sharpkits, могу поделиться с вами моим кодом (проектом), чтобы вы могли мне помочь. Я пробовал код, который вы мне отправляете, но он не работает, может быть, я делаю что-то неправильно. Большое спасибо! – Mario