ios 11

时间:2017-11-16 10:22:05

标签: swift tableview ios11

我在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中的问题,或者我已经搜索过这种方法的任何变化,但我仍然没有得到正确的解决方案。

如果有人也面临同样的问题。并找到了解决方案。请建议我。

提前致谢。

1 个答案:

答案 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
}