【问题标题】:How can I set dynamic height for TableView header heightForHeaderInSection?如何为 TableView 标题 heightForHeaderInSection 设置动态高度?
【发布时间】:2016-08-05 07:24:50
【问题描述】:

我有一个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

【问题讨论】:

    标签: ios xcode swift uitableview uisearchbar


    【解决方案1】:

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

    【讨论】:

    • 谢谢。这实际上是可行的,但是由于范围按钮在出现时是动画的,而 tableView 标题高度不是,所以在它被范围按钮填充之前,您可以看到大约一秒钟的灰色空间。知道如何解决这个问题吗?
    • 对不起,很难说,如果它仍然适合你,请提供截屏或短视频。
    猜你喜欢
    • 2021-09-18
    • 2016-10-19
    • 2015-10-18
    • 2012-07-03
    • 1970-01-01
    • 2019-05-23
    • 2015-05-10
    • 1970-01-01
    • 2011-05-25
    相关资源
    最近更新 更多