2010-08-30 11 views
28

He hecho una UITableViewCell personalizada en IB, pero por alguna razón, a pesar de la opción de línea única para seleccionar el separador, no hay líneas de separación en mi tabla.UITableViewCell separador no aparece

¿Le ha pasado esto a alguno de ustedes? ¿Lo que da?

Gracias!

Respuesta

47

¿Está el UITableViewCell en IB asociado con una subclase UITableViewCell que anula drawRect:? Si es así, asegúrese de estar llamando a la súper implementación, ya que eso es lo que dibuja la línea en la parte inferior. Si está anulando layoutSubviews, asegúrese de que ninguna vista esté oscureciendo la parte inferior de la celda.

+51

Además, si está reemplazando las vistas de diseño, asegúrese de llamar a [superdispositivoSubviews]; primero – codecaffeine

+1

@codecaffeine Jesús, gracias por esto. – ZShock

+1

@codecaffeine Funcionó para mí también. Gracias –

1

Encontré separatorStyle en UITableView class reference. Dice que agregará separatorStyle a la celda devuelta por el método delegado, tableView:cellForRowAtIndex:.

Por lo tanto, creo que debe modificar la propiedad de estilo en la instancia de UITableView.

+0

No se puede asignar el estilo de separador en este método. – Shmidt

+0

@Shmidt, leí el documento de Apple nuevamente, http://goo.gl/FgTirp. ** UITableView utiliza esta propiedad para establecer el estilo de separador en la celda devuelta por el delegado en tableView: cellForRowAtIndexPath:. ** – AechoLiu

+0

eso es absolutamente correcto. – Shmidt

22

En mi caso, olvidé llamar a [superdispositivoSubviews] después de anular el método layoutSubviews. Me llevó dos horas encontrar el problema.

+1

sí ... también tuve el mismo problema –

2

en mi caso tengo que establecer la propiedad separatorStyle del tableView

tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;

0

Tal vez un caso poco probable, pero no hay otra posible causa.

Tengo un UITableView personalizado llamado AddressBookTableView y está incluido en un .XIB para uno de mis controladores de vista. Lo que noté fue que se había agregado como un elemento UIView con una clase personalizada especificada para ser AddressBookTableView. Eliminé este elemento y agregué un elemento UITableView en su lugar, cuya clase I volvió a especificar como AddressBookTableView y los separadores mágicamente reaparecieron.

Me tomó un tiempo largo estupendo encontrar este ...

asegurarse de que su encargo UITableView .xib elementos son de hecho a medida UITableView elementos No renombrado UIView elementos.

Para ser sincero, me sorprende que el único defecto notable de este error fue que faltaban los separadores. Aparte de eso, el UITableView todavía funcionaba normalmente?

50

Sólo una cabeza a pesar de que este es un viejo mensaje:

Si está utilizando el simulador y el separador UITableView no aparece entre las células que pueden deberse al hecho de que su escala de ventana es demasiado pequeña .

Cambiar esto de ir a Window-> Scale-> 100%

+4

Esa fue la razón en mi caso. Me tomó horas para entender. – Ali

+3

Dios! ¡He estado luchando con esto por horas! ¡Gracias! – enricmacias

+2

Muchas gracias ... estaba empezando a perder la voluntad! – RJH

0

Si agrega mediante programación subvistas a su celular, asegúrese de agregar los subvistas

a celular.contentView y no a células

[cell.contentView addSubview:subview]; 
0

Para cualquiera de ver esto: Mi problema era que tenía múltiples secciones, y la primera celda de cada sección no tener un separador. En mi vista de tabla, había sobrescrito la función heightForHeader (devolviendo 0). Eliminar esto solucionó el problema.