2016-04-13 2 views
0

У меня есть UIView с внутри UITableView и еще UIView. Внутри UITableView у меня есть заголовок, который содержит UISearchController, контроллер поиска содержит UISearchBar. Проблема в том, что когда я начинаю фокусироваться на панели поиска и редактируя textField (поэтому, когда searchController.searchBar.isFirstResponder()), кнопки области отображаются, закрывая и скрывая часть моей первой строки таблицы.Как установить динамическую высоту для высоты заголовка TableView для HeaderInSection?

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

func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { 
     if searchController.searchBar.isFirstResponder() { 
      return 40.0 
     } 
     else{ 
      return 20.0 
     } 
    } 

любая идея о том, как я мог это достичь? Спасибо заранее.

EDIT: Я также установил следующее при определении моего searchController

searchController.searchResultsUpdater = self 
searchController.dimsBackgroundDuringPresentation = false 
searchController.searchBar.scopeButtonTitles = ["Groups", "People"] 
tableView.tableHeaderView = searchController.searchBar 
searchController.searchBar.delegate = self 
searchController.searchBar.sizeToFit() 
self.definesPresentationContext = false 

ответ

1

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

+0

Спасибо. Это действительно работает, но поскольку кнопки области анимированы, когда они появляются, а высота заголовка tableView - нет, вы можете увидеть серое пространство около секунды, прежде чем оно будет заполнено кнопками области. Любая идея, как это исправить? –

+0

извините, его трудно сказать, если он по-прежнему актуальен для вас, предоставить скринкаст или короткое видео. –

Смежные вопросы