#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 … во-вторых, обновите время истечения, когда ваше приложение перейдет в фоновое состояние (если ваше приложение не поддерживает фоновые режимы)