Swift:节标题XIB文件没有锚定到tableView的宽度

问题描述 投票:0回答:1

我在具有多个节的UIViewController中有一个tableView。为了创建自定义节标题,我在XIB文件中创建了它们,而自定义单元则在情节提要中创建了。我遇到的问题是,与自定义单元格不同,自定义节标题没有锚定在tableView的右侧。我尝试在viewForHeaderInSection中设置宽度,以防.AddSection出现问题,但这不起作用。

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    switch CompAnalysisSection.init(rawValue: section) {
    case .CompetitorSection:
        let headerView = Bundle.main.loadNibNamed("CompHeaderView", owner: self, options: nil)?.first as! CompHeaderView

        return headerView
    case .AddSection:
        let headerView = Bundle.main.loadNibNamed("AddCompsView", owner: self, options: nil)?.first as! CompHeaderView
        headerView.frame.size.width = self.tableView.bounds.width
        headerView.widthAnchor.constraint(equalToConstant: tableView.frame.size.width).isActive = true

        headerView.delegate = self
        return headerView
    case .AverageSection:       
        let headerView = Bundle.main.loadNibNamed("AveragePeersView", owner: self, options: nil)?.first as! CompHeaderView


        return headerView
    default: return UIView()
    }



class CompHeaderView: UIView {

override func awakeFromNib() {
    super.awakeFromNib()

}

override func layoutSubviews() {
    super.layoutSubviews()
}

}

外观的图片。如您所见,这些部分实际上是您看到的前3行,最后一行是自定义单元格。

enter image description here

swift uitableview xib
1个回答
0
投票

您需要将translatesAutoresizingMaskIntoConstraintsheaderView属性设置为false,以添加新的约束来解决此问题。像这样:

let headerView = Bundle.main.loadNibNamed("AddCompsView", owner: self, options: nil)?.first as! CompHeaderView
headerView.frame.size.width = tableView.bounds.width
headerView.translatesAutoresizingMaskIntoConstraints = false
headerView.widthAnchor.constraint(equalToConstant: tableView.frame.size.width).isActive = true
© www.soinside.com 2019 - 2024. All rights reserved.