Swift: cómo crear un encabezado personalizado para UITableView?

Necesito agregar un encabezado personalizado a mi tabla

Intento esto

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { let view = UIView(frame: CGRect(x: 0, y: 0, width: tableView.frame.size.width, height: 18)) let label = UILabel(frame: CGRect(x: 20, y: 20, width: 50, height: 50)) label.text = "TEST TEXT" label.textColor = UIColor.whiteColor() self.view.addSubview(view) return view } 

pero esto no funciona, no veo nada en la table

Qué estoy haciendo mal ? ¿O tal vez hay otras forms?

¿Configuró el alto del encabezado de sección en viewDidLoad?

 self.tableView.sectionHeaderHeight = 70 

Además deberías replace

 self.view.addSubview(view) 

por

 view.addSubview(label) 

Finalmente tienes que revisar tus frameworks

 let view = UIView(frame: CGRect.zeroRect) 

y, finalmente, el color del text deseado, ya que parece que actualmente es blanco sobre blanco.

agregue la label a la subview de view personalizada, no necesita self.view.addSubview(view) , ya que viewForHeaderInSection devuelve la vista UIView

 view.addSubview(label) 

Si está utilizando la celda personalizada como encabezado, agregue lo siguiente.

 func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { let headerView = UIView() let headerCell = tableView.dequeueReusableCell(withIdentifier: "customTableCell") as! CustomTableCell headerView.addSubview(headerCell) return headerView } 

Si desea tener una vista simple, agregue lo siguiente.

 func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { let headerView:UIView = UIView() return headerView } 

Si está dispuesto a utilizar un encabezado de tabla personalizado como encabezado de tabla, intente lo siguiente …

Actualizado para swift 3.0

Paso 1

Cree UITableViewHeaderFooterView para un encabezado personalizado.

 import UIKit class MapTableHeaderView: UITableViewHeaderFooterView { @IBOutlet weak var testView: UIView! } 

Paso 2

Agregar encabezado personalizado a UITableView

  override func viewDidLoad() { super.viewDidLoad() tableView.delegate = self tableView.dataSource = self //register the header view let nibName = UINib(nibName: "CustomHeaderView", bundle: nil) self.tableView.register(nibName, forHeaderFooterViewReuseIdentifier: "CustomHeaderView") } extension BranchViewController : UITableViewDelegate{ } extension BranchViewController : UITableViewDataSource{ func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { return 200 } func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { let headerView = self.tableView.dequeueReusableHeaderFooterView(withIdentifier: "CustomHeaderView" ) as! MapTableHeaderView return headerView } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { // retuen no of rows in sections } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { // retuen your custom cells } func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { } func numberOfSections(in tableView: UITableView) -> Int { // retuen no of sections } func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { // retuen height of row } }