custom ios uitableview swift xib

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