es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo renderizar una celda de UITableViewCell @IBDesignable en Storyboard?

Creo una subclase de UITableViewCell llamada CustomTableViewCell y la marco como @IBDesignable. En el archivo CustomTableViewCell.xib, arrastro una etiqueta a su centro, luego configuro un @IBOutlet y nombro a esta etiqueta como contentLabel. Luego, arrastro una TableViewCell y la coloco en la tabla de un ViewController en el archivo de storyboard, y cambio su clase a CustomTableViewCell. Mi pregunta es: ¿cómo renderizar este contentLabel en el storyboard?

El siguiente fragmento no funciona y creo que es porque contentLabel aún no se inicializa en init(), pero quiero darle un texto inicial y renderizarlo en el storyboard. ¿Cómo puedo lograr esto?

@IBDesignable class CustomTableViewCell: UITableViewCell {
@IBOutlet weak var contentLabel: UILabel!

override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
    super.init(style: style, reuseIdentifier: reuseIdentifier)
    contentLabel.text = "Hola"
}

required init?(coder: NSCoder) {
    super.init(coder: coder)
    contentLabel.text = "Hola"
}

}

EDIT: Esta celda debe ser reutilizada en varios controladores de vista diferentes.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para renderizar la etiqueta contentLabel en el storyboard, puedes agregar el método prepareForInterfaceBuilder() a tu clase CustomTableViewCell y establecer el texto inicial de la etiqueta allí:

    @IBDesignable class CustomTableViewCell: UITableViewCell {
        @IBOutlet weak var contentLabel: UILabel!
    
        override func prepareForInterfaceBuilder() {
            super.prepareForInterfaceBuilder()
            contentLabel.text = "Hola"
        }
    
        // resto de la clase
    }
    

    Este método se llama cuando el Interface Builder está renderizando la celda, por lo que puedes usarlo para configurar cualquier propiedad que desees ver en la vista previa. Esto no afectará el comportamiento de la celda en tiempo de ejecución.

    Ten en cuenta que el método prepareForInterfaceBuilder() no se llamará si no configuras la Custom Class de la celda prototipo como CustomTableViewCell en el storyboard.

Comments are closed.