custom - iOS Swift viewForHeaderInSection no está siendo llamado
table view xib (4)
Tengo una vista de UITable. Estoy intentando agregar un HeaderView
a mi vista de UITableview
.
Sin embargo, no se está llamando a viewForHeaderInSection, pero veo que se está llamando o se muestra titleForHeaderInSection. También intenté usar un encabezado de celda personalizado para esto y tampoco funciona.
No tengo idea de lo que estoy haciendo mal.
override func viewDidLoad() {
super.viewDidLoad()
self.title = "Groceries"
tableView.registerNib(UINib(nibName: "TransactionSpecifiedCategoriesTableViewCell", bundle: nil), forCellReuseIdentifier: "TransactionSpecifiedCategoriesTableViewCell")
tableView.registerNib(UINib(nibName: "TransactionSpecifiedCategoriesHeaderViewCell", bundle: nil), forHeaderFooterViewReuseIdentifier: "TransactionSpecifiedCategoriesHeaderViewCell")
tableView.tableFooterView = UIView(frame: CGRectMake(0, 0, 0, 0))
}
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let footerView = UIView(frame: CGRectMake(0, 0, tableView.frame.size.width, 100))
footerView.backgroundColor = UIColor.blackColor()
return footerView
//let header: UITableViewHeaderFooterView = view as UITableViewHeaderFooterView
//var headerView = UIView(frame: CGRectMake(0, 0, 100, 320))
//headerView.backgroundColor = UIColor.blackColor()
//
//return headerView
}
func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 200.0
}
func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return "First section header title"
}
El método viewForHeaderInSection
pertenece al protocolo UITableViewDelegate
. Por lo tanto, debe establecer el delegate
de su vista de tabla en su controlador de vista para obtener esta devolución de llamada. Probablemente acaba de configurar el dataSource de la vista de dataSource
como se dataSource
sus otros métodos.
En veloz 3
Deberías llamar
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let rect = CGRect(x: 0, y: 0, width: tableView.frame.size.width, height: 44)
let footerView = UIView(frame:rect)
footerView.backgroundColor = UIColor.clear
return footerView
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 44
}
Tuve este problema con viewForHeaderInSection que no se llama en el UITableViewController, que es el delegado de forma predeterminada. Resultó que
override func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat
impedía que se llamara viewForHeaderInSection. Por lo tanto, si la cosa del delegado no funciona, es posible que deba verificar que no esté anulando uno de los otros métodos de encabezado de sección.
en Swift 3.0
también puede agregar tableView.estimatedSectionHeaderHeight = 40 en viewDid para obtener la vista viewForHeaderInSection