Сделайте так, чтобы последняя строка в UITableView появилась сверху - PullRequest
0 голосов
/ 29 июня 2018

У меня есть UITableView со случайным количеством пользовательских ячеек. Работает нормально.

Я перемещаю выбранную ячейку в верхнюю часть UITableView с помощью:

tableView.scrollTo(index path animated)

Однако, когда выбранная ячейка находится на последней полной «странице» ячеек, это не работает - очевидно.

Можно ли заставить эту работу каким-то образом «дополнить» таблицу пустым пространством, в зависимости от позиции Y выбранной ячейки, чтобы даже при выборе последней строки она анимировалась и переместилась в верхнюю часть представления таблицы

Я подумал:

let point = CGPoint(x: 0, y: 200)
tableView.setContentOffset(point, animated: false)

будет работать, но это не (200) было тестовой суммой.

Я уверен, что это возможно, могу я получить указатель?

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

rMaddy дал правильный ответ. Спасибо! Я бы никогда не подумал об использовании нижнего колонтитула!

Просто для тех, кого это может заинтересовать, был рабочий код:

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

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
    let maxNumberOfRows        = 24
    let maxNumberOfVisibleRows = 10
    let safeArea: CGFloat      = 20

    let cell = tableView.cellForRow(at: indexPath)

    if indexPath.row >= maxNumberOfRows - maxNumberOfVisibleRows
    {
        let numberOfSpacesRequired = ( maxNumberOfRows - indexPath.row ) * Int((cell?.bounds.height)!)

        let spaceView = UIView()

        spaceView.bounds = CGRect(x: 0, y: 0, width: Int(tableView.bounds.width), height: ( Int(tableView.bounds.height - safeArea) - numberOfSpacesRequired) )

        tableView.tableFooterView = spaceView
    }

    tableView.scrollToRow(at: indexPath, at: UITableViewScrollPosition.top, animated: true)
}
0 голосов
/ 29 июня 2018

Если вы хотите, чтобы табличное представление прокручивалось достаточно далеко, чтобы последняя строка достигла верхней части экрана, установите представление в качестве табличного представления tableFooterView.

Сделать его пустым UIView с высотой, равной видимой высоте представления таблицы минус высота одной строки.

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