setContentOffset не работает для UIScrollView внутри UITableViewCell в первый раз - PullRequest
0 голосов
/ 26 июня 2018

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

cell.horizontalScrollView.setContentOffset(CGPoint(x: 300, y: cell.horizontalScrollView.contentOffset.y), animated: true)

внутри функции UITableView cellForRowAtIndexPath, и вызывается tableview.reloadData() всякий раз, когда мне нужно прокрутитьэто программно.

Проблема в том, что это не работает в первый раз.то есть,

Когда таблица загружается впервые, просмотры прокрутки внутри видимых ячеек не прокручиваются в соответствии с кодом.Его смещение только в (0,0). ---- ( Это проблема! )

Но после этого, когда я прокрутил tableView, то новыйячейки (повторно использованные ячейки) обновляются и позиция прокрутки изменяется. (что мне было нужно с самого начала!)

Итак, я хочу изменить UIScrollView начальное смещение (позиция) программно.Как мне этого добиться?

Ответы [ 2 ]

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

Atlast, я нашел решение, посидев пару дней!

Пришлось реализовать layoutIfNeeded для UITableViewCell в методе cellForRowAtIndexPath перед установкой contentOffset для UIScrollView.

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath) as! CustomCell
    cell.layoutIfNeeded()
    cell.horizontalScrollView.setContentOffset(CGPoint(x: 300, y: cell.horizontalScrollView.contentOffset.y), animated: false)
    return cell
}
0 голосов
/ 26 июня 2018

Лучший способ реализовать это - создать подкласс для вашей ячейки, а затем установить смещение содержимого в методе layoutSubviews.

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