с помощью timer, но насколько понимаю это решение не совсем архитектурно верное.
Кейс:
Я переключаюсь между сорсами одного tableView. На каждый клик происходит запрос в сеть и обновление tableView. Если делать это достаточно быстро, происходит коллизия - Т.е. пользователь будет находиться на владке "А", а показываться будет контент из вкладки "Б"
Вопрос: Как этого избежать?
Для такого рода задач всё что нужно делать, это отменять текущий запрос(если таковой имеется) аккурат перед нажатием переключателя.
И делать соответствующий reload таблица только в том случаи, когда запрос не отменился.
как я понял, дело даже не в запросе, а вообще в моменте переключения. я в соседнем чате уже советовал что нужно вообще не переключать, а иметь две таблицы
Ну он вроде переключает, идёт подсос данных, и в этот же момент переключается обратно. А в каком-то комплишине первого запроса, несмотря на то, что он больше не актуален, всё равно делается релоад со старыми данными.
та не, ну это же вообще) или я неверно понял вопрос тогда. просто встречался с ситуацией когда для одной таблицы используют два датасорса (физические его переключают) и в этот моменте - проблема
что имелось в виду под data source?) если просто обновить данные в массиве после запроса - это не переключение
Тогда смотри, во время запроса, захвати индекс или что-то что определяет текущую вкладку, а в комплишине запроса, сверь это значение с актуальным, если эти значения не совпадают, то данные уже не актуальный и не нужно делать релоад. Если совпали, делай релоад.
Он видимо под переключением назвал нажатие на что-то, что меняет полностью данные, делает запрос и после получения релоад. Типа коллекция с машинами, коллекция с мотоциклами при нажатии, но на том же экране с той же коллекцией или таблицей.
я понял что это один экран, но не ясно, это просто новые данные, или физический ссылка на другой tableView.dataSource = newDataSource
Да это не важно, он просто делает релоад в том комплишине, который уже не актуален 😅
так нет же, может он создает именно несколько разных классов которые реализуют протокол датасорса, или использует diffable data source, с разными типами ячеек, и матчит их коллекцию тут гадать можно бесконечно) но если ты прав - то я просто вопрос не понял
Меня больше удивляет отсутствие автора вопроса 😂
Я не говорил data source 🤷♂️
Обсуждают сегодня