我在viewForHeaderInSection函数中面临一个问题。在ios 10中它运行正常,但是在ios 11中它会在每次重新加载tableview时创建重复视图意味着它意味着dequeueReusableHeaderFooterView无效。
我按照添加viewForHeaderInSection的过程进行操作。 首先我为自定义标题视图注册nib是UITableViewHeaderFooterView的子类
self.tblView.register(UINib(nibName: "CommentShotringHeader", bundle: nil), forHeaderFooterViewReuseIdentifier: "CommentShotringHeader")
这是我的UITableViewDelegate方法
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 45.0
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let viewHeader = self.tblView.dequeueReusableHeaderFooterView(withIdentifier: "CommentShotringHeader") as! CommentShotringHeader
return viewHeader
}
这是IOS 11中的问题,或者我已经搜索过这种方法的任何变化,但我仍然没有得到正确的解决方案。
如果有人也面临同样的问题。并找到了解决方案。请建议我。
提前致谢。
答案 0 :(得分:1)
不要在iOS11上使用estimatedSectionHeaderHeight
(测试最高为11.3)。它可能导致您解释的多个问题。
如果可以预先计算身高
self.tableView.sectionHeaderHeight = 40;
而不是
self.tableView.estimatedSectionHeaderHeight = 40;
否则覆盖委托方法:
// Swift
public override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
// return calculated height
}
// Obj-c
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
// return calculated height
}