Я хочу добавить новые элементы в топ, как твиттер - PullRequest
0 голосов
/ 12 октября 2018

У меня есть collectionView, и я получаю данные из API с помощью Alamofire (у меня есть PHP (Laravel) Backend).Я сделал временную шкалу, как твиттер, и когда я использую pull для обновления, он перезагружает все данные, но это бесполезно, потому что, если кто-то обновляет данные, они будут прокручиваться вверх каждый раз.

Я хочу, чтобы они оставались в текущей позиции прокрутки, и новые элементы добавлялись вверху, а когда они перемещались вверх, они продолжали читать сообщения, такие как твиттер.Я надеюсь, вы поймете, что я имею в виду.Я исследую его, но не могу найти ни одной подобной проблемы, думаю, потому что я не знаю, как я могу описать это.

API для обзора: https://gasome.com/api/post

Я использую модуль KafkaRefresh для получения доступа кобновить

self.mCollectionView.bindHeadRefreshHandler({
self.id.removeAll(keepingCapacity: false)
self.loadPosts()
}, themeColor: UIColor.blue, refreshStyle: .native)

1 Ответ

0 голосов
/ 13 октября 2018

Вы хотите использовать функцию performBatchUpdates(_:completion:) в UICollectionView.Есть несколько руководств по его использованию, и я предлагаю вам использовать алгоритм сравнения, такой как https://github.com/wokalski/Diff.swift.


После прочтения ваших комментариев ... Это большой вопрос.Это не тривиальная вещь.Вам нужно будет отслеживать смещение содержимого представления коллекции каждый раз, когда пользователь прокручивает и сохраняет его.Затем, когда пользователь выводит экран на передний план, вам нужно будет загрузить новейшие данные, добавить значение к смещению сохраненного содержимого для количества точек, которые новые данные добавили в верхнюю часть экрана, а затем установить коллекцию.просматривает смещение содержимого на это значение.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...