2012-05-12 13 views
5

Tenía un UITableView de estilo sencillo, y sus celdas son una subclase de UITableViewCell.Dibujar el separador vertical en UITableViewCell

En la subclase de células que hicieron caso omiso drawRect a poner este código en el dibujo (para un separador vertical):

CGContextRef c = UIGraphicsGetCurrentContext(); 
CGContextSetStrokeColorWithColor(c, [[UIColor grayColor] CGColor]); 
CGContextBeginPath(c); 
CGContextMoveToPoint(c, self.frame.size.height + 0.5f, 0); 
CGContextAddLineToPoint(c, self.frame.size.height + 0.5f, self.frame.size.height); 
CGContextStrokePath(c); 

funcionó muy bien. Sin embargo, ahora he cambiado el estilo de la vista de tabla a agrupado. La línea simplemente no está dibujada. Aunque la configuración de un punto de interrupción muestra que se llama al método drawRect.

Me gustaría evitar las subclases de UIView solo para dibujar una línea pequeña, especialmente porque ya he subclasificado la celda de la vista de tabla y solo quiero dibujar en la celda. Entonces, ¿por qué el código deja de funcionar repentinamente en una vista de tabla agrupada?

+0

intente restablecer el simulador n cleening ur prjct – Saad

Respuesta

10

No es buena idea anular drawRect en UITableViewCell subclases. Si no desea establecer la celda personalizada backgroundView, puede simplemente agregar UIView simple de 1px de ancho.

UIView* vertLineView = [[UIView alloc] initWithFrame:CGRectMake(80, 0, 1, 44)]; 
vertLineView.backgroundColor = [UIColor redColor]; 
[self.contentView addSubview:vertLineView]; 
+1

De acuerdo. O puede agregar un UIImageView con una imagen de línea personalizada a la celda. – Joel

+1

¿Por qué no es una buena idea? –

+0

Creo que estaba equivocado al respecto. En algunos casos, podría ser razonable anular 'drawRect'. – onegray

Cuestiones relacionadas