5

¿Debo configurar heightForRowAtIndexPath si estoy usando una UITableViewCell personalizada? En mi NIB, ya configuré la altura de la celda.¿Debo configurar heightForRowAtIndexPath si estoy usando una UITableViewCell personalizada?

Cuando anulo heightForRowAtIndexPath, el contenido de mi celda no aparece, aunque está configurado a la altura definida en el NIB.

Si no anulo heightForRowAtIndexPath aparecen los contenidos de la celda, pero hay un desbordamiento ya que la altura predeterminada no es lo suficientemente grande.

Respuesta

12

Si todas sus filas son de la misma altura, puede configurar la propiedad rowHeight de su UITableView en lugar de implementar tableView:heightForRowAtIndexPath:. Si tiene filas de diferentes alturas, entonces debe implementar tableView:heightForRowAtIndexPath:.

Ninguno de estos métodos volverá automáticamente la altura de la celda que definió en su SEMILLA, a medida que se llaman antes de empezar la construcción de las células en tableView:cellForRowAtIndexPath:.

Para usar la altura de la celda definida en su NIB, le recomiendo que defina una propiedad personalizada de su controlador llamada prototypeCell, que contendrá una única celda que nunca se mostrará en su tabla. En tableView:heightForRowAtIndexPath:, verifique si prototypeCell es nulo. Si es así, inicialízalo desde tu NIB. A continuación, devuelva prototypeCell.frame.size.height.

+2

+1 ¡Gran uso del patrón de diseño Prototype! –

+0

¿Cómo está inicializando PrototypeCell? ¿Estás utilizando 'initWithStyle: reuseIdentifier:'? Si uso eso, entonces 'prototypeCell.frame.size.height' devuelve la altura predeterminada (44) y no la altura definida en el xib. – kraftydevil

+0

La carga del plumín puede inicializarlo e incluirá la altura correcta. Puede registrar un plumín para la celda o asignar un prototipo de celda a un IBOutlet en el xib de su controlador. –

Cuestiones relacionadas