NSTimer для UITableviewcell похож на приложение World Clock - PullRequest
5 голосов
/ 27 сентября 2010

Я хотел бы создать несколько простых таймеров обратного отсчета в UITableview. Я заметил, что приложение World Clock имеет анимированные часы в каждом ряду. Каков наилучший метод запуска NSTimer для обновления каждой строки таблицы? Можно ли запустить один таймер, который обновляет все ячейки, или я должен иметь собственный подкласс представления со встроенным таймером, который добавляется в каждую строку?

Я просто пытаюсь найти правильный курс действий.

Ответы [ 2 ]

6 голосов
/ 27 сентября 2010

Достаточно одного таймера. Когда он срабатывает, спросите в табличном представлении видимые ячейки и обновите их одну за другой. Вы также можете просто вызвать reloadData, когда сработает таймер, но в зависимости от того, как вы рисуете свои ячейки, вы можете выполнять больше работы, чем необходимо, и не можете использовать анимацию.

3 голосов
/ 27 сентября 2010

Просто знайте, что вам нужно настроить таймер на срабатывание чаще, чем раз в секунду. NSTimer не является прецизионным устройством - вы планируете его на следующий доступный слот процессора по истечении указанного вами времени. Таким образом, 1 секунда NSTimer НЕ будет срабатывать ровно за секунду, и может со временем накапливать довольно много ошибок. Вы хотите, чтобы он оживал несколько раз в секунду, просматривал текущее время, замечал, когда прошла секунда, и выполнял обновления интерфейса / данных, соответствующие этому факту.

...