viewForHeaderInSection宽度不正确

时间:2016-04-18 17:57:56

标签: ios uitableview swift2.2

我的headerView的宽度不适应屏幕的宽度。 我的viewForHeaderInSection功能:

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let cell = self.tableView.dequeueReusableCellWithIdentifier("sectionCell") as! sectionCell
    cell.hint.text = "some name"

    cell.tag = section


    let singleTap = UITapGestureRecognizer(target: self, action: #selector(singleTapOnSection(_:)))

    cell.addGestureRecognizer(singleTap)

    let view = UIView(frame: cell.frame)

    view.addConstraints(cell.constraints)

    view.addSubview(cell)

    return view
}

我必须将单元格添加到UIView(或类似的东西),因为我在该部分中隐藏了行。 在我看来,我必须以编程方式添加“查看”一些约束,但我不知道如何

2 个答案:

答案 0 :(得分:0)

您应该定义headerview宽度相同的tableview和高度。不给细胞的高度或宽度。如果你在ui上使用storyborard,那么在上方的tableview上拖动uiview,它会自动设置为headerview,然后给出top,leading,trailing and fix heigth constraints并删除viewForHeaderInSection方法。

希望这会有所帮助:)

答案 1 :(得分:0)

定义customView: UITableViewHeaderFooterView类,并在View Controller中viewDidLoad:编写

tableView.registerClass(customView.classForCoder(), forHeaderFooterViewReuseIdentifier: "HeaderIdentifier")

而不是将单元格出列,而是将UITableViewHeaderFooterView出列(因为这是正确的方法)。

这样你就必须在代码中添加自动布局或在 nib 文件中定义它,如果你正在使用这种方法,使用nib并处理各种事情是有点令人沮丧的我建议使用这个库http://www.cs.cmu.edu/afs/cs/academic/class/15418-s12/www/lectures/10_coherence.pdf