UIRefreshControl + UISearchBar вызывает разрыв в UITableView - PullRequest
0 голосов
/ 19 октября 2018

У меня есть UITableView с UIRefreshControl в нем, и я использую UISearchController, чтобы добавить UISearchBar к панели навигации ( не к заголовку представления таблицы), как рекомендовано Apple.

Когда пользователь опускается, появляется строка поиска.Если они продолжают тянуть, элемент управления обновлением появляется и вращается на панели навигации над панелью поиска.Это ожидаемое поведение.

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

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

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

enter image description here

Вот как я могу запустить и остановить управление обновлением:

tableView?.refreshControl?.beginRefreshing()

tableView?.refreshControl?.endRefreshing()

Я пытаюсьчтобы запустить его в viewDidLoad перед началом сетевого вызова, и остановить его, когда представление таблицы будет готово к перезагрузке со свежим контентом.

Я также попытался настроить automaticallyAdjustsScrollViewInsets и попытался tableView.contentInsetAdjustmentBehavior = .never безизменить.

Буду признателен за любые идеи о том, что я мог бы упустить здесь!Спасибо!

Вот скриншот после того, как я потянул обновиться в симуляторе, и панель навигации исчезла в верхней части экрана.Я немного потянул его, чтобы вы могли видеть зеленый цвет на панели навигации, чтобы показать, где он находится, но, не потянув вниз по экрану, вы увидите только белое пространство:

Missing navigation bar

Если я могу опустить и заставить панель навигации снова встать на место (я не могу понять, почему это иногда работает, но иногда нет), оно перекрываетсяс помощью строки поиска, например:

enter image description here

...