如何为TableView标题heightForHeaderInSection设置动态高度?

时间:2016-04-13 23:25:57

标签: ios xcode swift uitableview uisearchbar

我在UIView内有一个UITableView,另一个UIView。在UITableView内,我有一个包含UISearchController的标头,搜索控制器包含UISearchBar。问题是,当我开始关注搜索栏并编辑textField时(所以当searchController.searchBar.isFirstResponder())时,范围按钮会出现,覆盖并隐藏表视图第一行的一部分。

这就是为什么我试图使headerView高度动态化,以便每当搜索栏是第一个响应者时我都可以更改它。我尝试了以下但是它没有工作:

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

关于如何实现这一目标的任何想法? 提前谢谢。

编辑:我在定义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 个答案:

答案 0 :(得分:1)

尝试侦听UISearchController搜索栏委托,如果它成为第一响应者 - 调用your_tableView.reloadData()函数。