Прокрутите до верхней части экрана после нажатия, чтобы обновить вид таблицы - PullRequest
0 голосов
/ 19 декабря 2018

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

func refresh() {
    currentPage = currentPage + 1

    if currentPage <= totalPages {
        fetchMessaes(page: self.currentPage, completed: {

            self.messageArray.append(contentsOf: self.fetchedMessages!.messages!)

            // Sort message by ID so that latest message appear at the bottom.
            let sortedArray = self.messageArray.sorted(by: {$0.id! < $1.id!})
            self.fetchedMessages = sortedArray

            self.messagesTable.reloadData()

            // Scroll to the last row of recently loaded messages
            DispatchQueue.main.async {
                let index = IndexPath(row: 0, section: 0)
                self.messagesTable.scrollToRow(at: index, at: .top, animated: false)
            }
        })
    }
    refreshControl.endRefreshing()
}

1 Ответ

0 голосов
/ 19 декабря 2018

Можете ли вы поместить таблицу reloadData() внутрь main queue и попробовать?

DispatchQueue.main.async {
    self.messagesTable.reloadData()
    let index = IndexPath(row: 0, section: 0)
    self.messagesTable.scrollToRow(at: index, at: .top, animated: false)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...