tableView.headerView(forSection: 0) 的高度为零

Posted

技术标签:

【中文标题】tableView.headerView(forSection: 0) 的高度为零【英文标题】:Height for tableView.headerView(forSection: 0) is nil 【发布时间】:2017-07-07 01:42:44 【问题描述】:

当用户在this tutorial 之后滚动时,我正在尝试更改标题视图的高度。但是,当我尝试访问self.songsTable.headerView(forSection: 0)?.frame.size.height(这样我可以更新标题视图的高度)时,该值为 nil 并且调试器告诉我“标题视图没有高度”。我使用heightForHeaderInSectionviewForHeaderInSection 以编程方式创建了我的标题视图。

代码

class SongsViewController 
var currentHeaderHeight: CGFloat = 136

    func scrollViewDidScroll(_ scrollView: UIScrollView) 
        //Throws error
        guard let currentHeaderHeight = self.songsTable.headerView(forSection: 0)?.frame.size.height else 
            print("header view has no height")
            return
        
    

    public func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat 
        return currentHeaderHeight
    

    public func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? 
        let headerView = UIView()
        headerView.frame = CGRect(x: 0, y: 0, width: Screen.width, height: maxHeaderHeight)
        return headerView
    

【问题讨论】:

如果没有看到完整的代码,这有点难以调试。想到的一些事情 - currentHeaderHeight 是什么?会不会是0?你有任何部分(numberOfSections)吗?您的调试器是否打印了因为 songTable.headerView(forSection: 0) 为零? @cloudcal 我已经更新了我的代码。 currentHeaderHeight 最初设置为 136。numberOfSections 为 1。我不确定为什么 songsTable.headerView(forSection: 0) 为 nill,即使我可以在模拟器上看到标题 @Alex ,嗨,你找到这个 nil 问题的原因了吗? 有没有人找到解决这个问题的方法。我现在正坐在里面???? 【参考方案1】:

这可能只是您的代码 sn-p 中缺少的,但是您是否将 viewController 设置为 TableViewDataSource?

class SongsViewController: UIViewController, UITableViewDataSource 

    override func viewDidLoad() 
        super.viewDidLoad()
        songsTable.dataSource = self
    

    // ... the rest of your code ...

【讨论】:

是的,我已经做到了。也许我调用了错误的函数来获取该部分的标题视图?

以上是关于tableView.headerView(forSection: 0) 的高度为零的主要内容,如果未能解决你的问题,请参考以下文章

for循环套for循环

java 后执行的for循环比先执行的for循环速度快

循环 - forEach、for、for....of、for...in

for,for-each,for-in,for-of,map的比较

wx:for wx:for-item wx:for-index wx:for-key

如何确定for循环的次数!