Swift中的编码3.拥有一个带有自定义单元格和标题的tableView。
我有一个带有自定义单元格和标题的tableView。标题中包含两(2)个标签,并且由于标签可能很长,因此具有动态单元格高度。我的问题是第一次配置tableView和部分时,标签显示为应该,但是,在向下滚动然后备份标题后,它应该出现。布局不知何故打破了。
如下所示,在我向下滚动然后返回到单元格后,标签将被截止。
在打印出调用的方法后,我发现第一次向下滚动tableView时会调用以下两(2)个覆盖函数。
override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
print("\(section) heightForHeaderInSection")
print("\(section) returning AUTO for header")
return UITableViewAutomaticDimension
}
override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
print("\(section) viewForHeaderInSection")
let header = tableView.dequeueReusableCell(withIdentifier: "QuestionHeader") as! QuestionHeader
header.delegate = self
header.contentView.backgroundColor = UIColor.groupTableViewBackground
header.questionTextLabel.text = String(questionStringArray[section])
header.questionNumberLabel.text = (String(section + 1) + ")")
return header.contentView
}
但是当我向后滚动时,只调用了viewForHeader函数,我认为因为高度不再被设置为UITableViewAutomaticDimension,标签会被截断?
有什么想法吗?
答案 0 :(得分:1)
您应该从header
方法返回header.contentView
而不是tableView: viewForHeaderInSection:
:
override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let header = tableView.dequeueReusableCell(...
...
return header
}