Celda de encabezado de UITableView en Swift
Estoy utilizando un UITableView con el encabezado. Para el encabezado, uso viewForHeaderInSection. Tengo una etiqueta y un botón en mi celda de encabezado. También tengo un array para asignar un nombre a la etiqueta de mi celda de headerView. Mi array es
let cellArray = ["Gato", "Perro", "Ratón", "Jirafa", "Cebra"]
Estoy agregando una función @objc para el botón de la celda de headerView y usando el tag para el botón.
Aquí está mi código:
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerView = tableView.dequeueReusableCell(withIdentifier: "HeaderTableViewCell") as! HeaderTableViewCell
headerView.cellLabel.text = self.cellArray[section]
headerView.cellButton.tag = section
headerView.cellButton.addTarget(self, action: #selector(expandRow(sender:)), for: .touchUpInside)
return headerView
}
Mi pregunta es: quiero cambiar la etiqueta cellLabel en la función @objc de la celda seleccionada. Supongamos que toco la primera celda, quiero cambiar el nombre de la etiqueta de la primera celda pero no sé cómo hacerlo.
Esto sería fácil si estuviéramos usando las filas en lugar de los encabezados, ya que hay cellForRowAt para las filas. Pero no puedo acceder a esa celda de encabezado seleccionada.
¿Alguien tiene la solución?
davy.ai
Para acceder a la celda del encabezado seleccionada, puedes seguir los siguientes pasos:
expandRow
para almacenar la sección seleccionada en la variable:headerView(forSection:)
para obtener la vista del encabezado actual para la sección seleccionada:Puedes utilizar este código para actualizar el nombre de la etiqueta de la celda del encabezado seleccionada.
Ten en cuenta que es posible que necesites desempaquetar forzosamente
headerView
o utilizar enlace opcional dependiendo de tu implementación.