Как загрузить больше данных в UITableView, используя pull для обновления или любые другие методы делегирования в swift? - PullRequest
0 голосов
/ 23 октября 2018

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

Я уже реализовал функцию обновления до обновления.Может кто-нибудь написать шаги или код для реализации этой функции, либо в функции pull to refresh, либо с использованием любых методов делегирования табличного представления?

PS Я не хочу использовать cocoapods или какой-либо сторонний код.

Вот моя функция обновления для обновления

    // Pull to refresh
    @objc func refresh(_ refreshControl: UIRefreshControl) {
    fetchMessages(completed: {
        self.messagesTable.reloadData()
    })

    refreshControl.endRefreshing()
}

Ответы [ 2 ]

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

На самом деле в iMessage не требуется обновлять.Называется ленивый груз .Ленивая загрузка означает, что когда у вас много данных, и вы разбиваете их на страницы.Итак, для того, чтобы получить чат как табличное представление с историей:

  • Нарежьте свою базу чата на мелкие части, например, 10-20 сообщений на фрагмент.
  • Загрузите последний фрагмент в виде таблицы.
  • В TableView...WillDisplayCellForRow... определить, когда будет отображаться первая строка табличного представления.
  • Загрузить другой фрагмент и вставить в верхнюю часть табличного представления
0 голосов
/ 23 октября 2018

Думайте, что это список страниц, разбитый на страницы.Позвольте вам выбрать и показать 100 предмет за раз.В то время как пользователь запрашивает больше, вы выбираете больше элемента 100 и выводите его на страницу сведений о чате.

Теперь в общем виде вы поддерживаете переменные offset и limit типа Int,Если вы знакомы с offset и limit API, разбитыми на страницы, вы можете игнорировать следующий раздел.

Скажем, вы сначала получите 0-100-е сообщение, в этом случае ваш offset будет 0 иlimit будет 100.После завершения операции извлечения ваша переменная offset будет обновлена ​​до 100.Поэтому в следующий раз вы получите 101-200-е сообщение и обновите значение offset до 200.Таким образом, вы идете вперед.

Таким образом, вы должны поддерживать offset и limit.Переменная limit обозначает номер элемента, который нужно получить за раз.

Таким образом, при каждом обновлении табличного представления вы выбираете элементы в зависимости от offset & limit и заполняете элементы данных, а затем обновляете табличное представление.

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

func insertRows(at indexPaths: [IndexPath], 
       with animation: UITableView.RowAnimation)

Счастливое кодирование.

...