UITableView líneas de separación entre las células desaparecen en rollo
-
20-09-2019 - |
Pregunta
Problema: El separador entre las células en una vista de tabla aparece sólo para aquellas células que se muestran cuando la vista de las cargas, y sólo en tiempo de carga. Cuando el tableview se desplaza hacia abajo, las células desplazado a la vista no muestran separador entre ellos, a continuación, cuando el tableview se desplaza hacia arriba, las células iniciales no muestran separador.
Detalles de: tengo un UITableView a la que estoy añadiendo UITableViewCells estándar. Estas células se crean con initWithFrame, marco height = 90 píxeles. Estoy agregando una vista personalizada creada a partir de una punta a la vista de esta célula, altura = 90 píxeles. La altura de la celda se especifica en 90px en tableView: heightForRowAtIndexPath:.
¿Alguien ha experimentado este comportamiento?
Solución
Tenía la sensación de la solución a esto sería sencillo ... Hice la altura de mis células 91px y aparecen las líneas de separación como deberían de desplazamiento.
Otros consejos
No podía utilizar la solución de Douglas porque mis cuadros tienen una enorme cantidad de células y se convertirían en prácticamente inutilizable en el teléfono viejo. La reutilización de las células es clave para el rendimiento.
Pero, he conseguido solucionar el problema utilizando un separador transparente y añadir mi propia en el contentView de la célula, de la siguiente manera:
yourTable.separatorColor = [UIColor clearColor];
separatorView.frame = FactRectMake(0, rowHeight-1, appFrame.size.width, 0.2);
Yo tenía el mismo problema, pero he usado una solución diferente. Mis separadores fueron desapareciendo porque estaba limpiando mi celular en:
for (UIView *eachView in self.subviews) {
[eachView removeFromSuperview];
}
Esto elimina la vista del separador, así!
En su lugar, le asigna una etiqueta para cada uno de mis puntos de vista de aduana (tres etiquetas) justo antes de agregarlos a la vista substitución:
tempFirstNameLabel.tag = 100;
self.firstNameLabel = tempFirstNameLabel;
[self addSubview:self.firstNameLabel];
Luego, cuando me aclaré la celda, me acaba de quitar los puntos de vista:
for (int i = 100; i<103; i++) {
UIView *eachView = [self viewWithTag:i];
[eachView removeFromSuperview];
}
Espero que esto ayude! Esto también evita los problemas de gestión de memoria que la solución de @Douglas Smith planteó.
Debe establecer separador de ninguna línea y luego sola vez
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// it is a bug in iOS 7
tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;