При прокрутке табличного представления мне нужна строка, проходящая в самом верху табличного представления. - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть табличное представление, мне нужен indexpath строки, проходящей в самой верхней части (0,0) табличного представления, я пытаюсь использовать indexPathForRow (at :), который ожидает cgpoint, я пытаюсьCGPoint.zero, чтобы получить строку, но indexPath всегда равен нулю, я прочитал, что мне нужно играть со смещением scrollView, и эта точка должна быть в локальной координате, но пока не повезло

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    let cgPoint = CGPoint.zero
    let indexPath = tableView.indexPathForRow(at: cgPoint)
}

Спасибо за любую помощь!

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Сначала необходимо преобразовать (0,0) в координату границ табличного представления , например, так:

// Take (0,0) from parent view, find where it locates in table view's bounds
let p = tableView.superview!.convert(.zero, to: tableView)
guard let ind = tableView.indexPathForRow(at: p) else { return }
let cell = tableView.cellForRow(at: ind)! // Do what you want

Demo GIF

0 голосов
/ 28 сентября 2018

Может быть только одна причина, почему это будет ноль из-за того, что ваша точка зрения не ограничена пределами таблицы.

Документация Apple:

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

Попробуйте это.

let cgPoint = CGPoint.zero

if self.tableView.frame.contains(cgPoint) {
     print("point exist so indexpath should exist")
}

Ссылка: Разница между границами и рамой

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