El encabezado de la sección UITableView no se muestra

Estoy tratando de hacer encabezados de sección con autolayout. Un encabezado simple con un título y un contador

class ProfilePeopleListHeaderViewCell: UIView { let titleLeftOffset = 12 let counterRightOffset = 5 let counterWidth = 50 var title = "title" { didSet { titleLabel.text = title } } var numberOfPeople = 0 { didSet { peopleCounter.text = "\(numberOfPeople)" } } let titleLabel = UILabel() let peopleCounter = UILabel() convenience init(title: String, numberOfPeople:Int) { self.init() self.title = title self.numberOfPeople = numberOfPeople backgroundColor = UIColor.greenColor() titleLabel.textColor = Constants.Colors.ThemeGreen titleLabel.textAlignment = .Left if #available(iOS 8.2, *) { titleLabel.font = Constants.Fonts.Profile.PeopleListHeaderFont peopleCounter.font = Constants.Fonts.Profile.PeopleListHeaderFont } else { titleLabel.font = UIFont.systemFontOfSize(14) peopleCounter.font = UIFont.systemFontOfSize(14) } peopleCounter.textAlignment = .Right peopleCounter.textColor = Constants.Colors.ThemeDarkGray addSubview(titleLabel) addSubview(peopleCounter) self.titleLabel.snp_makeConstraints { (make) -> Void in make.centerY.equalTo(self) make.height.equalTo(self) make.width.equalTo(peopleCounter).multipliedBy(3) make.left.equalTo(self).offset(titleLeftOffset) } self.peopleCounter.snp_makeConstraints { (make) -> Void in make.centerY.equalTo(self) make.height.equalTo(self) make.width.equalTo(counterWidth) make.left.equalTo(titleLabel.snp_right) make.right.equalTo(self).offset(counterRightOffset) } } } 

El código para recuperar el encabezado es:

  let mutualFriendsSectionView = ProfilePeopleListHeaderViewCell(title: Strings.Title.MutualFriends, numberOfPeople: 0) override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { if section == 1 { //mutualFriendsSectionView.layoutSubviews() return mutualFriendsSectionView } } override func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { return 40 } 

Obtengo un background verde en el encabezado de la sección. Pero no veo ninguna label …

 Try this out for UITableView Section Header. 1. Progtwigtically create headerview func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { let headerView = UIView.init(frame: CGRectMake(0, 0, tblView.bounds.size.width, 50)) let lblHeader = UILabel.init(frame: CGRectMake(15, 13, tableView.bounds.size.width - 10, 24)) if section == 0 { lblHeader.text = "Image Settings" } else if section == 1 { lblHeader.text = "Personal Settings" } else { lblHeader.text = "Other Settings" } lblHeader.font = UIFont (name: "OpenSans-Semibold", size: 18) lblHeader.textColor = UIColor.blackColor() headerView.addSubview(lblHeader) headerView.backgroundColor = UIColor(colorLiteralRed: 240.0/255.0, green: 240.0/255.0, blue: 240.0/255.0, alpha: 1.0) return headerView } 2. Height for HeaderView func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { return 50 } 

En realidad está funcionando. mi error fue creer que didSet {} también se llamó dentro de la class -> no es el caso.

Cuando estaba configurando el título en init () no estaba configurando el text de la label.

intente crear una instancia de headerView dentro del método viewForHeader

Edite su código de la siguiente manera

 override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { let mutualFriendsSectionView = ProfilePeopleListHeaderViewCell(title: Strings.Title.MutualFriends, numberOfPeople: 0) if section == 1 { //mutualFriendsSectionView.layoutSubviews() return mutualFriendsSectionView } }