2009-06-24 8 views
5

Mam dość dużą listę "przedmiotów" (do 250 wpisów), które ciągle się zmieniają. Lista jest wyświetlana w UITableView.Problemy z rysowaniem UITableView podczas wywoływania funkcji ReloadData

Mam wątek odpytywania, który pobierze kilka nowych wpisów i wstawi je do SQLite DB.

Po pojawieniu się nowych wpisów, wywołuję obiekt źródłowy danych widoku tabeli, aby zaktualizować jego zestaw danych, który uruchamia zapytanie SQL i zwraca nową tablicę wpisów.

Po wykonaniu tej czynności wywoływana jest opcja -reloadData w widoku tabeli. Kiedy tak się dzieje, w około 7 na 10 przypadków widok tabeli jest pusty (brak wyświetlanych komórek i widoczny jest tylko kolor tła tabeli) do momentu wykonania następnego polecenia -reloadData. Dotknięcie widoku tabeli (przewijanie, wybranie komórki, cokolwiek, co wymusi odświeżenie) spowoduje jej ponowne pojawienie się.

Widok tabeli, jego wskaźnik IBOutlet i aktualnie wyświetlane komórki są ważne w momencie, gdy widzę błąd z pustym rysunkiem, więc jestem dość pewny, że nie zostaną one zwolnione.

Próbowałem rozwiązać ten problem przez kilka dni i to naprawdę zaczyna prowadzić mnie pod górę.

Każda pomoc w tej sprawie byłaby niesamowita, dzięki.

Odpowiedz

19

Czy to pomoże, jeśli wykonasz [ myTable performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO]?

Problem, o którym wspomniałeś może wystąpić, jeśli nie wykonasz aktualizacji GUI z głównego wątku.

+1

Stary, uratowałeś mi życie. Miałem właśnie zeskoczyć z mostu lub coś takiego ... Dzięki! – Jasarien