Как обрабатывать время и функциональность таймера в ячейке UITableView

#ios #swift #uitableview

#iOS #swift #uitableview

Вопрос:

Я добавляю таймер в каждую ячейку, и у каждой ячейки есть свое собственное время, API отправляет мне время истечения, чтобы предупредить пользователя, мне нужно включить таймер по времени истечения для каждой конкретной ячейки, я сталкиваюсь с проблемой, когда я прокручиваю табличный вид, и он отключает ячейку, тогда таймер не работает должным образом, и как я могу справиться с этим для тех ячеек, которых нет на экране. предположим, что в моем массиве 100 элементов, но в данный момент я могу отобразить на экране только 10 элементов, а затем как я буду проверять и оповещать пользователя о 20-й или 30-й ячейке (элементе). И как я проверяю сигнал тревоги для каждой отдельной ячейки. Пожалуйста, объясните это.

я пробовал использовать indexPath, но для меня это бесполезно для тех ячеек, которых нет на экране, и создает проблемы при прокрутке.

Комментарии:

1. Рассмотрение, вместо того, чтобы иметь Timer для КАЖДОЙ ячейки / элемента. Есть один, который тикает с небольшим, но регулярным интервалом. Используйте это, чтобы определить, у какого элемента (ов) истекло время ожидания, а затем выполнить требуемую функциональность

2. Но как это будет работать для тех ячеек, которых нет на экране. или не в очереди

3. Это не должно волновать. «Центральный» таймер заботится только обо всей модели, а не о пользовательском интерфейсе

4. Запускать таймеры в представлении — очень плохая практика. Запустите его в модели и используйте обратные вызовы или протокол / делегирование, чтобы иметь возможность динамически обновлять пользовательский интерфейс, когда ячейка отображается на экране.

5. Запишите таймер () вашей модели in или view, если вы работаете на MVVM. во-вторых, обновите время истечения, когда ваше приложение перейдет в фоновое состояние (если ваше приложение не поддерживает фоновые режимы).

Ответ №1:

Вы должны попытаться установить таймер в модели. если вы работаете над Model-View-ViewModel … во-вторых, обновите время истечения, когда ваше приложение перейдет в фоновое состояние (если ваше приложение не поддерживает фоновые режимы)