2010-09-27 7 views
5

Chciałbym zbudować kilka prostych zegarów odliczających w widoku UITable. Zauważyłem, że aplikacja Zegar światowy ma animowane zegary w każdym rzędzie. Jaka jest najlepsza metoda wypalania programu NSTimer w celu aktualizacji każdego wiersza tabeli? Czy można uruchomić pojedynczy licznik czasu, który aktualizuje wszystkie komórki, czy powinienem mieć niestandardową podklasę widoku z wbudowanym zegarem dodawanym do każdego wiersza?NSTimer dla UITableviewcell podobnego do aplikacji World Clock

Po prostu staram się uzyskać właściwy kierunek działania.

Odpowiedz

6

Jeden timer jest wystarczający. Po uruchomieniu zapytaj widok tabeli o widoczne komórki i zaktualizuj je jeden po drugim. Można również po prostu zadzwonić pod numer reloadData, gdy timer się uruchomi, ale w zależności od tego, jak narysujesz komórki, możesz wykonać więcej pracy niż to konieczne i nie możesz korzystać z animacji.

3

Wystarczy wiedzieć, że musisz zaplanować, aby timer uruchamiał się częściej niż raz na sekundę. NSTimer nie jest urządzeniem precyzyjnym - planujesz go do następnego dostępnego gniazda procesora po określonym czasie. Tak więc 1-sekundowy NSTimer NIE BĘDZIE strzelał dokładnie przez sekundę i może z upływem czasu zgromadzić całkiem sporo błędów. Chcesz, aby ożyło kilka razy na sekundę, spójrz na bieżący czas, zauważ, kiedy minie sekunda, i wykonaj aktualizacje UI/danych odpowiednie dla tego faktu.