#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.
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.
Następnie podobnie robimy z pozostałymi widokami w których mamy tableView. Zapisujemy zmiany i commitujemy na serwer.