Прокрутка табличного представления отскакивает назад и скрывает нижние ячейки - PullRequest
7 голосов
/ 02 октября 2009

У меня есть вид, который отображается под контроллером навигации. Представление содержит одно подпредставление в верхней части и табличное представление в нижней части. Таблица может иметь строки, которые выходят за пределы видимой высоты на основе данных. Когда у меня есть строки, которые находятся ниже последней видимой строки, если я прокручиваю вид вверх, он возвращается назад, он не остается там. Есть ли способ заставить его остаться? Я попытался сделать родительский вид прокрутки, и это не помогло. Мой взгляд из XIB.

Ответы [ 3 ]

26 голосов
/ 02 октября 2009

Похоже, размер вашего UITableView немного больше, чем область, доступная на экране iPhone. Это может быть связано с тем, что в представлении не учитывается размер навигационной панели. В качестве теста зайдите в Интерфейсный Разработчик и сделайте UITableView намного меньше, скажем, наполовину, чтобы вы могли четко видеть верх и низ. Посмотрите, есть ли у вас тот же подпрыгивающий.

Если размеры правильные, UITableView не требуется UIScrollView для функционирования, как ожидалось. На самом деле, было бы немного причин, о которых я мог бы подумать прямо сейчас (кроме горизонтальной прокрутки), что вам нужен UITableView внутри UIScrollView.

0 голосов
/ 16 июня 2016

Если вы не используете раскадровку, вы можете попробовать следующий (быстрый) код:

tableView.contentInset = UIEdgeInsetsMake( (self.navigationController!.navigationBar.frame.origin.y + self.navigationController!.navigationBar.frame.size.height), 0, 0, 0)

self.view.addSubview(tableView)

Если у вас есть панель инструментов или (если вы используете TabBarController), вам также необходимо настроить нижнюю часть:

tableView.contentInset = UIEdgeInsetsMake( (self.navigationController!.navigationBar.frame.origin.y + self.navigationController!.navigationBar.frame.size.height), 0, 0, 0)

self.view.addSubview(tableView)

Обратите внимание, что это простой и «грубый» код. Вы можете сделать его красивее, если это необходимо:)

0 голосов
/ 20 августа 2014

В вашем View-контроллере верхнего уровня, в параметрах "Simulated Metrics", установите Top Bar и / или Bottom Bar (в зависимости от того, что отображается в вашем View Controller) на "непрозрачный". Затем измените размер табличного представления так, чтобы он располагался между панелью навигации и панелью инструментов / панелью вкладок. Наконец, добавьте два ограничения:

  1. Руководство по макету сверху вниз
  2. Руководство по расположению снизу до низа

Очень хорошо сработало для меня, независимо от ориентации.

...