#13 Odświeżanie tableView bez scrollowania listy

W tym wpisie zajmiemy się dosyć częstym problemem jakie jest odświeżenie listy tableView po zaktualizowaniu listy. W poprzednich wpisach po pobraniu danych JSONem, wypełnialiśmy komórki odpowiednio pobranymi danymi, a następnie wykorzystywaliśmy poniższy kod do ich aktualizacji.

self.tableView.reloadData()      

Wadą takiego rozwiązania było to że lista pojawiała się na ekranie dopiero w momencie dotknięcia ekranu i/lub przesunięcia palcem (scroll). Przez co pozostawał kiepski efekt tak jak by lista nie została załadowana.  Początkowo przy pierwszym załadowaniu widoku z lista efekt był taki jak poniżej.

table view bez odświeżenia

Aby odświeżyć listę zaraz po jej załadowaniu bez jakiejkolwiek reakcji użytkownika, wystarczy wstawić poniższy kod.

DispatchQueue.global(qos: .userInitiated).async {
    DispatchQueue.main.async {
       self.tableView.reloadData()
   }
}

Od teraz pierwsze uruchomienie spowoduje że po pobraniu JSONa z danymi do tableView od razu lista zostanie odświeżona i wyświetli się na ekranie. Efekt będzie taki jak poniżej.

table view z odświeżeniem

Następnie podobnie robimy z pozostałymi widokami w których mamy tableView. Zapisujemy zmiany i commitujemy na serwer.

Dodaj komentarz