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 并且调试器告诉我“标题视图没有高度”。我使用heightForHeaderInSection
和viewForHeaderInSection
以编程方式创建了我的标题视图。
代码
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) 的高度为零的主要内容,如果未能解决你的问题,请参考以下文章
循环 - forEach、for、for....of、for...in
for,for-each,for-in,for-of,map的比较