Sobes.tech
Middle

¿Cómo hacer para que al tocar una columna, las otras no se resalten?

sobes.tech AI

Respuesta de la IA

Se puede crear una UITableViewCell personalizada y sobrescribir los métodos para gestionar el estado de selección.

Aquí un ejemplo:

import UIKit

class CustomCell: UITableViewCell {

    override func setSelected(_ selected: Bool, animated: Bool) {
        // No llamamos a super.setSelected
        // Gestionamos la apariencia por nuestra cuenta, si es necesario
    }

    override func setHighlighted(_ highlighted: Bool, animated: Bool) {
        // No llamamos a super.setHighlighted
        // Gestionamos la apariencia por nuestra cuenta, si es necesario
    }
}

En tableView(_:cellForRowAt:) debes usar esta clase personalizada:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    guard let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath) as? CustomCell else {
        fatalError("La celda en cola no es una instancia de CustomCell.")
    }
    // Configuración de la celda
    return cell
}

También puedes establecer UITableViewCell.selectionStyle en .none:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "CellIdentifier", for: indexPath)
    cell.selectionStyle = .none // Desactiva el resaltado estándar al tocar
    // Configuración de la celda
    return cell
}