Разрыв над первой таблицей с использованием UISearchController - PullRequest
0 голосов
/ 05 июня 2018

Я не могу удалить пробел над первой строкой таблицы при тестировании с iOS 10.3.Я перепробовал все решения, предложенные в других сообщениях, такие как automaticallyAdjustsScrollViewInsets, добавил иерархическое представление над UITableView в иерархии, например, здесь - но все безуспешно.

Вот настройка и сценарий.

У меня есть UIViewController, который имеет UITableView.Называя это V1.он встроен в навигационный контроллер.

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

 self.searchController.obscuresBackgroundDuringPresentation = false
 self.searchController.hidesNavigationBarDuringPresentation = true
if #available(iOS 11.0, *)  {

            self.searchController.searchBar.delegate = self
            self.navigationItem.searchController = self.searchController
            self.navigationController?.navigationBar.prefersLargeTitles = true
            self.searchController.searchBar.scopeButtonTitles = ["All","A","B"]
            self.navigationItem.hidesSearchBarWhenScrolling = true

        } else {

           self.searchController.searchBar.delegate = self
           self.searchController.searchBar.scopeButtonTitles = ["All","A","B"]
           tableView.tableHeaderView = searchController.searchBar
           self.searchController.searchBar.sizeToFit()
}

У меня есть другой виртуальный канал (таблица), из которого я собираю данные с использованием функции раскрутки.Называя его V2.

я делаю следующее в методе раскрутки

DispatchQueue.main.async {

                self.searchController.searchBar.text = searchText

                    self.searchController.isActive = true
                let scope = self.searchController.searchBar.scopeButtonTitles![self.searchController.searchBar.selectedScopeButtonIndex]

                self.filterContentForSearchText(searchText, scope: scope)

            }

Сценарий 1 - работает нормально 1. Открытие V1 отображает строки и строку поиска точно в заголовке таблицы.2. Нажмите на кнопку на панели, которая открывает V2. 3. Выберите значение и верните. 4. Возвращаемое значение присваивается панели поиска, а панель поиска открывается на панели навигации. 5 В таблице показаны строки, соответствующие возвращенному значению из V2. Между первой строкой и пропуском нет пропусков.Строка поиска

Сценарий 2 - сбой.1. Открытие V1 отображает строки и строку поиска точно в заголовке таблицы.2. Прокрутите строки вверх так, чтобы заголовок проходил под панелью навигации. 3. Нажмите на кнопку панели, которая открывает V2. 4. Выберите значение и нажмите 5. Возвращаемое значение присваивается панели поиска, и панель поиска открывается на панели навигации. 5 В таблице показаны строки, которыесоответствует возвращаемое значение из V2

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

Я заметил, что происхождение табличного представления составляет -88, когда происходит выше.

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

В чем может быть проблема?скриншоты прилагаются.

  1. Снимок экрана, показывающий разрыв между активным контроллером поиска и первой ячейкой. enter image description here
  2. Снимок экрана, показывающий разрыв между неактивным контроллер поиска и первая ячейка. enter image description here
  3. Визуальный отладчик, отображающий представление ViewController оранжевым цветом, представление таблицы зеленым цветом и представление заголовка плоской сливы.Существует вид выше первой ячейки, которую я выбрал.Не знаю, что это такое, но вызывает ли это проблему?Вид на нижний стол тоже.enter image description here

Спасибо, Ашиш

...